【发布时间】:2018-01-11 08:49:09
【问题描述】:
查看下方更新!
对于我的 Python 程序,我需要将 3 个不同的列表写入 csv 文件,每个列表位于不同的列中。每个列表都有不同的大小。
l1 = ['1', '2', '3', '4', '5']
l2 = ['11', '22', '33', '44']
l3 = ['111', '222', '333']
f = 'test.csv'
outputFile = open(f, 'w', newline='')
outputWriter = csv.writer(resultFile, delimiter=';')
outputWriter.writerow(headerNames)
for r in l3:
resultFile.write(';' + ';' + r + '\n')
for r in l2:
resultFile.write(';' + r + '\n')
for r in l1:
resultFile.write(r + '\n')
resultFile.close()
不幸的是,这不起作用。列表的值写在右侧列中的其他列表下方。我希望将列表值并排写成这样:
1;11;111
2;22;222
etc.
我确信有一种简单的方法可以完成这项工作,但经过数小时的尝试,我仍然无法弄清楚。
更新:
我尝试了以下方法。这是进步,但我还没有。
f = input('filename: ')
l1 = ['1', '2', '3', '4', '5']
l2 = ['11', '22', '33', '44']
l3 = ['111', '222', '333']
headerNames = ['Name1', 'Name2', 'Name3']
rows = zip(l1, l2, l3)
with open(f, 'w', newline='') as resultFile:
resultWriter = csv.writer(resultFile, delimiter=';')
resultWriter.writerow(headerNames)
for row in rows:
resultWriter.writerow(row)
它以我想要的格式写入数据,但是没有写入值 4、5 和 44。
【问题讨论】:
-
签出
itertools.zip_longest
标签: python-3.x csv