【问题标题】:Python CSV - Writing different lists in the same CSV-filePython CSV - 在同一个 CSV 文件中编写不同的列表
【发布时间】: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


【解决方案1】:

您的第一次尝试没有正确使用 csv 模块,也没有像第二次尝试那样转置行。

现在压缩行将在最短的行结束后立即停止。您想要 itertools.ziplongest 代替(例如填充值为 0)

import itertools,csv
f = "out.csv"
l1 = ['1', '2', '3', '4', '5']
l2 = ['11', '22', '33', '44']
l3 = ['111', '222', '333']
headerNames = ['Name1', 'Name2', 'Name3']
rows = itertools.zip_longest(l1, l2, l3, fillvalue=0)
with open(f, 'w', newline='') as resultFile:
    resultWriter = csv.writer(resultFile, delimiter=';')
    resultWriter.writerow(headerNames)
    resultWriter.writerows(rows)  # write all rows in a row :)

输出文件包含:

Name1;Name2;Name3
1;11;111
2;22;222
3;33;333
4;44;0
5;0;0

【讨论】:

  • 感谢您的意见!由于列表具有不同的长度,因此不写入值 4、5 和 44。你有什么办法可以解决这个问题吗?
  • @WesselJespers 看到我的编辑。我认为这就是你现在想要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
相关资源
最近更新 更多