【问题标题】:Python csv file writing a list of listsPython csv文件写入列表列表
【发布时间】:2012-05-14 17:31:09
【问题描述】:

我如何在 python 中写入一个 csv 文件,这样,一个列表(这是一个列表的列表)

[['CL07001006', 'IM20010809'], ['IM75630511', 'IM75550511', 'IM75610511', 'IM75640511', 'IM75500511'],['CL0700100r','CL0700100U','PL07001006']]

格式如下:

CL07001006 IM75630511 CL0700100r
IM20010809 IM75550511 CL0700100U
           IM75610511 PL07001006
           IM75640511
           IM75500511

我尝试过类似以下的方法:

def demo():
    lol = [['CL07001006', 'IM20010809'], ['IM75630511', 'IM75550511', 'IM75610511',  'IM75640511', 'IM75500511']]
    file = open("dummy.csv", 'wb')
    fileWritter = csv.writer(file, delimiter='\n',quotechar='|', quoting=csv.QUOTE_MINIMAL)
    for l in lol:
        fileWritter.writerow(l)


if __name__ == '__main__':
    demo()

结果如下:

CL07001006
IM20010809
IM75630511
IM75610511
IM75640511
IM75500511

谢谢。

【问题讨论】:

  • 您需要转置列表(制作行列)并用无填充缺失值。之后你可以使用 csv.writerows
  • CSV 文件的行格式为“CL07001006,IM75630511,CL0700100r\n”。这是你想要的吗?

标签: python csv


【解决方案1】:
>>> import itertools
>>> import csv
>>> x = [['CL07001006', 'IM20010809'], ['IM75630511', 'IM75550511', 'IM75610511', 'IM75640511', 'IM75500511'],['CL0700100r','CL0700100U','PL07001006']]
>>> outs = csv.writer(open("out.csv", "wb"))
>>> for row in itertools.izip_longest(*x):
...     outs.writerow(row)
...
>>> ^D

$ cat "out.csv"
CL07001006,IM75630511,CL0700100r
IM20010809,IM75550511,CL0700100U
,IM75610511,PL07001006
,IM75640511,
,IM75500511,

【讨论】:

  • itertools.izip_longest 是一个很好的发现,比我的解决方案更优雅。我已经删除了我的。
猜你喜欢
  • 2012-12-11
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2016-09-02
相关资源
最近更新 更多