16

Python を使用して csv ファイルに書き込む必要があり、各反復子項目は新しい行で開始する必要があります。私が使用している区切り文字は「\ n」です。各リストが書き込まれた後、次のリストは次のセルから書き込まれます。以下のように:

 lol = [[1,2,3],[4,5,6]]

csv は次のようになります。

1 4
2 5
3 6

私が試したこと:

file = open("test.csv", "wb")
fileWriter = csv.writer(file , delimiter='\n',quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamWriter.writerow([1,2,3])
spamWriter = csv.writer(file , delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamWriter.writerow([4,5,6])
file.close()

以下のような結果:

 1
 2
 3
 4 5 6

csvモジュールを使用して、以下のような出力を取得するにはどうすればよいですか:

 1 4 
 2 5
 3 6

ここで、スペースは csv ファイルのカンマを意味します。

ありがとう。

4

3 に答える 3

13

zip を使用せずに、これを行うことができます。

import csv

lol = [[1,2,3],[4,5,6],[7,8,9]]
item_length = len(lol[0])

with open('test.csv', 'wb') as test_file:
  file_writer = csv.writer(test_file)
  for i in range(item_length):
    file_writer.writerow([x[i] for x in lol])

これは test.csv に出力されます:

1,4,7
2,5,8
3,6,9
于 2012-05-13T18:32:44.473 に答える
11

最初に使用して入力を転置しますzip()

>>> zip(*lol)
[(1, 4), (2, 5), (3, 6)]

その後、それをcsw.writeregに渡すだけです

with open("test.csv", "wb") as f:
    fileWriter = csv.writer(f, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
    for row in zip(*lol):
        fileWriter.writerow(row)

...結果は次のとおりです。

$ cat test.csv 
1,4
2,5
3,6
于 2012-05-13T17:55:34.393 に答える