2016-04-05 11 views
1

私は必要な方法でCSVファイルを書き込むことに問題があります。タプルのリストをCSVファイルとして書き込む

説明:

は、私が得た3リスト:

csvd = zip(list1, list2, list3) 
:私はこのような zipメソッドを使用しますので、

 Column 1| Column 2| Column 3 
Row 1  1|  dd1|  vi1 
Row 2  2|  dd2|  vi2 
Row 3  3|  dd3|  vi3 

:ように私は私のcsvファイルを書きたい

list1=[1,2,3] 

list2=['dd1','dd2','dd3'] 

list3=['vi1','vi2','vi3'] 

は私が持っているビュン後:

csvd = [(1, 'dd1', 'vi1'), (2, 'dd2', 'vi2'), (3, 'dd3', 'vi3')] 

し、次へを私はこのようなCSVライターを使用します。

with open('path\\test.csv', 'w') as f: 
    writer = csv.writer(f, delimiter='\t') 
    writer.writerows(csvd) 

これが私の出力です: csv

まず最初は、内のすべてのtoupleがある、ということです最初の列(私はタプルの各要素が別の列にあることを望む)。 2番目の問題は、次のtouplesの間に空の行があることです。

私はちょうどwriterowfor loopで私の問題を解決しようとしましたが、これは私の2番目の問題のための唯一の解決策です、私はまだ最初の列にすべてのtoupleを持っています。

+0

私は、リストのリストではなく、タプルのリストを得ました。 –

+0

あなたのcsvファイルを間違った区切り文字でExcelから読み込んでいる可能性があります。 –

答えて

4

わからないが、それはので、ラインターミネータのものであってもよいです。明示的に '\ n'に設定すると役立つ可能性があります。

Excelの列の問題について:Excelでは ';'が使用されます。既定では列セパレータとして使用します。これはExcelで変更できますが、列セパレータに使用する文字を変更することもできます。

このライター・コールは、ラインターミネータと列の区切りを変更します:それは場合に役立ちます

writer = csv.writer(f, delimiter=';', lineterminator='\n') 

を参照してください。

+0

これはそれです!あなたをたくさん奪いなさい。 –

0

これを試してみてください:

with open('path\\test.csv', 'wb') as f: 
+0

'w'を 'wb'に変更した後、空の行はなくなりますが、まだ最初の列にtoupleのすべての要素があります。 –

+0

@ K.Majええと、私はそれを再現できません。 。区切り文字として '、'を使用すると、同じ問題が発生しますか?単なる輸出上の問題ではありませんか? – bananafish

+0

'writer = csv.writer(f、区切り文字='; '、lineterminator =' \ n ')'は私の問題を解決します。 –

0

あなたはCSVに出て書いているときには自分の行と列をループする必要があります。

with open('test.csv', 'w') as f: 
    writer = csv.writer(f, delimiter='\t') 
    for row in csvd: 
     for i, column in enumerate(row): 
      f.write(str(column)) 

      if i != len(row)-1: 
       f.write(',') 
     f.write('\n') 

上記あなたとcsvファイルを与えます:

1,dd1,vi1 
2,dd2,vi2 
3,dd3,vi3 

EDIT:

私はこれに気付かなかったとは思えませんが、ライターがタブ区切りに設定されているため、空白スペースがあります。ちょうどにあなたの元のコードを変更:あなたの元のコードで

with open('test.csv', 'wb') as f: 
    writer = csv.writer(f, delimiter=',') 
    writer.writerows(csvd) 

、生の出力ファイルは、実際には次のようになります。

Excelで開くとき、あなたはあなたのイメージに投稿された方法を見ていきます
1 dd1 vi1 

2 dd2 vi2 

3 dd3 vi3 

したがって、デリミタを,に設定すると、生のファイルは上記の私の元の出力のようになります。そして、Excelでは、通常の(行と列、なし空白)になります。空白行について

enter image description here

+0

Excelの書式設定を解決していないようです – dvaergiller

関連する問題