2016-04-02 2 views
0

Я пытаюсь поместить список строк в csv, но на выходе csv каждая буква разделяется запятой. Есть ли способ исправить это?написать список строк в csv с помощью python

from urllib2 import urlopen  
import csv 
from scrapy.selector import Selector 
def make_soup(url): 
    data_text = urlopen(url).read() 
    hxs = Selector(text=data_text) 
    return hxs 

hxs = make_soup("http://propinfo.co.lincoln.or.us/property-search?search=+NW+3RD+ST") 
act = hxs.xpath('//*[@id="block-system-main"]/div[2]/div/div[2]/table/tbody/tr/td/a/text()').extract() 



with open("accounts.csv", "wb") as f1: 
    writer = csv.writer(f1) 
    writer.writerows(act) 
+0

Почему бы просто не использовать другой сеператор? Как вкладка или; –

+0

, то каждая буква разделяется вкладкой или; – chchannn

+0

Обычно это означает, что вы передаете строку, где CSV-код ожидает список. Попробуйте распечатать свою переменную 'act' и посмотреть, как она выглядит (вероятно, большая часть текста) по сравнению с тем, что, по вашему мнению, должно выглядеть (таблица, строка, пара столбцов, один абзац). Затем попробуйте 'split' или' dedent' или '[make a list]' или что вам нужно сделать. –

ответ

2

Печать act показывает, что у вас есть список строк [u'M14422', u'M28900', u'M33698', ...]. writerows обрабатывает каждую строку в списке как строку, а это означает, что каждый символ в строке является столбцом. Вот почему вы заканчиваете запятыми символами в finel csv.

Решение состоит в том, чтобы поместить каждую строку в свой собственный список, чтобы строка представляла собой список с одним столбцом.

from urllib2 import urlopen 
import csv 
from scrapy.selector import Selector 
def make_soup(url): 
    data_text = urlopen(url).read() 
    hxs = Selector(text=data_text) 
    return hxs 

hxs = make_soup("http://propinfo.co.lincoln.or.us/property-search?search=+NW+3RD+ST") 
act = hxs.xpath('//*[@id="block-system-main"]/div[2]/div/div[2]/table/tbody/tr/td/a/text()') 

with open("accounts.csv", "wb") as f1: 
    writer = csv.writer(f1) 
    for row in act: 
     writer.writerow([row]) 
Смежные вопросы