2013-01-03 20 views
19

Pythonを使用して、リストから.csvファイルに行ごとにデータを書き込みます。Pythonリストからcsv row-wiseにデータを書き込む

コード:

writer=csv.writer(open(filepath,'wb')) 
header=['type','id','numberOfUpdates','isPingEnabled','lastUpdated'] 
length_list=len(header) 
i=0 

while i!=length_list : 
    data=header[i] 
    print data 
    i=i+1 
    writer.writerow(data) 

結果:データはcsvファイルに書き込まれているが、各文字が各列に印刷されています。

たとえば、型は1つの列に「t」、次の列に「y」などと記述されます。 1つの列にすべての単語が必要です。私は何を変えることができるかを指摘できるか?

おかげwriter.writerow([data])

+1

のwriterowを名前は明らかに* 1 *行分のデータを示しているように書き込む:

また、あなたのループを再構築する必要があります。 *と*の例を最初に確認してください。 writerow()に1つの行のすべての列のデータを渡す必要があることについてのドキュメントは明確です。 –

+2

私はこの質問がdownvoteに値するとは思わない。それははっきりと書かれた質問です。 OPが作った唯一の不具合はおそらくcsvモジュールのドキュメントを完全に理解していなかったことでしょう。 – jdi

+0

ドキュメントの例は、APIの仕組みを見るためにはっきりしています....考え方 –

答えて

32

変更writer.writerow(data)

.writerowは、iterableをとり、各列に対してiterableの各要素を使用します。要素が1つしかないリストを使用すると、単一の列に配置されます。 ()

for word in header: 
    writer.writerow([word]) 
関連する問題