【发布时间】:2017-04-02 18:04:56
【问题描述】:
我正在抓取一个 XML 文件并将数据存储到几个列表中。最终,我从列表中获取数据并将其写入 CSV 文件。代码运行没有任何错误,但是当我之后检查数据时,似乎最后列表中的项目没有写入文件。最终文件中应该有大约 2000 行。
这是我的代码:
with codecs.open("some_file.csv", 'w', encoding='utf-8') as file:
writer = csv.writer(file, lineterminator='\n', delimiter=";")
for a, b, c in zip(l1, l2, l3):
writer.writerow([a, b, c])
我犯规了this 主题,但我已经使用了with。我错过了什么?
【问题讨论】:
-
你为什么要自己压缩一个列表? a b 和 c 都是一样的。
-
假设这意味着
zip(l1, l2, l3),您能确认l1、l2和l3的长度都相同吗?如果它们的长度不同,您可能需要itertools.zip_longest()。 -
您是否以任何方式终止您的程序?尝试在
writerow之前使用print打印值。看看问题出在循环还是writer -
所有列表的长度相同。当我不使用
zip时,我收到一条错误消息too many values to unpack。调试显示来自 xml 的所有数据都正确存储在列表中,并且没有任何遗漏。当我在写入文件之前打印出值时,结果与 csv 中的相同。最后的一些值丢失了。所以问题可能出在循环上。 -
试试
writer.writerows(zip(l1, l1, l1))