在Python中的列中将不同大小的列表写入csv

时间:2014-07-30 16:19:48

标签: python list csv

我需要在列中编写长度与CSV文件不同的列表。

我目前有:

d=lists
writer = csv.writer(fl)
for values in zip(*d):
    writer.writerow(values)

仅部分有效。我怀疑正在发生的事情是它会停止拉伸到列表中最短的列表。

2 个答案:

答案 0 :(得分:5)

下面的代码适用于Python 3.如果使用Python 2,请导入izip_longest而不是zip_longest。

import csv
from itertools import zip_longest

d = [[2,3,4,8],[5,6]]

with open("file.csv","w+") as f:
    writer = csv.writer(f)
    for values in zip_longest(*d):
        writer.writerow(values)

结果:

2,5
3,6
4,
8,

答案 1 :(得分:2)

没有'整洁'写它的方法,正如你所说,zip截断到最短迭代的长度。

可能最简单的方法是使用None或空字符串填充(不确定写作者的行为是什么,使用None值):

maxlen = max([len(member) for member in d])
[member.extend([""] * (maxlen - len(member))) for member in d]
for values in zip(*d):
    ...

或者,你可以在for循环中构造每一行,而不是使用zip,这样会更有效但更多的更多。

编辑:更正的例子