2016-04-02 53 views
0

我想將字符串列表放入csv,但在輸出csv中,每個字母用逗號分隔。有沒有辦法來解決這個問題?使用python將字符串列表寫入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()').extract() 



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

爲什麼不直接使用另一臺分離器呢?像選項卡或; –

+0

然後每個字母由製表符分隔或; – chchannn

+0

這通常意味着您在CSV代碼需要列表中傳遞一個字符串。嘗試打印出你的'act'變量,看看它看起來像什麼(可能是一大塊文本),而不是你認爲它應該看起來像什麼(一個表,一行,一對列,一個段落)。然後嘗試「分割」或「縮進」或「[列出清單]」或任何你需要做的事情。 –

回答

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])