2016-04-02 20 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'変数を印刷して、それがどのように見えるか(おそらくテキストの大きな塊)と見えるもの(テーブル、行、列のペア、単一の段落)を見てください。次に、あなたがする必要があるものを '分割する'または 'dedent'や' [リストを作る] 'しようとします。 –

答えて

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]) 
関連する問題