Python,转置列表并写入CSV文件

14 python csv list

我需要使用python写入csv文件,每个迭代器项应该以新行开头.所以我使用的分隔符是"\n".写完每个列表后,下一个列表应该从下一个单元格写入.如下:

 lol = [[1,2,3],[4,5,6]]
Run Code Online (Sandbox Code Playgroud)

csv将如下:

1 4
2 5
3 6
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

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()
Run Code Online (Sandbox Code Playgroud)

结果如下:

 1
 2
 3
 4 5 6
Run Code Online (Sandbox Code Playgroud)

使用csv模块如何获得如下输出:

 1 4 
 2 5
 3 6
Run Code Online (Sandbox Code Playgroud)

这里的空格表示csv文件中的逗号.

谢谢.

red*_*rry 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])
Run Code Online (Sandbox Code Playgroud)

这将输出到test.csv:

1,4,7
2,5,8
3,6,9
Run Code Online (Sandbox Code Playgroud)


Kim*_*ais 9

首先使用转换您的输入 zip()

>>> zip(*lol)
[(1, 4), (2, 5), (3, 6)]
Run Code Online (Sandbox Code Playgroud)

然后将其传递给csw.writer例如

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)
Run Code Online (Sandbox Code Playgroud)

......结果是:

$ cat test.csv 
1,4
2,5
3,6
Run Code Online (Sandbox Code Playgroud)