【发布时间】:2012-12-17 02:52:20
【问题描述】:
我在尝试将字典打印到 CSV 文件时遇到问题。该字典目前有 4 列,但所有 4 列都打印在 1 列中。这可能是我用来写入 CSV 文件的 for 循环的原因,但我不太确定。我正在尝试在每一列中打印字典。
样本数据:
Date First Name Last Name Score
12/28/2012 15:15 John Smith 20
12/29/2012 15:15 Alex Jones 38
12/30/2012 15:15 Michael Carpenter 25
以下是部分代码摘录:
import csv
csvWriter = csv.writer(open("C:\\Users\\Chris\\Desktop\\test_out.csv", 'w'), delimiter=' ', quotechar=' ', quoting=csv.QUOTE_MINIMAL)
在上面的 CSV 文件中读取的 For 循环:
对于阅读器中的行:
for k, v in row.items():
if not k in mydict:
mydict[k] = [v]
else:
mydict[k].append(v)
For 循环将字典键打印到 CSV 文件。
for item in mydict.keys():
csvWriter.writerow(item)
当前输出(列标题):
D a t e
F i r s t N a m e
L a s t N a m e
S c o r e
想要的输出(列标题):
Date First Name Last Name Score
任何帮助将不胜感激。
【问题讨论】:
-
csvWriter.writerow(item) 没有意义。您每行只写一个项目...
-
请阅读 writerow() 文档。很明显,您需要将所有列标题作为元组传递给 one writerow() 调用...这是基本的数据类型魔术。
-
你知道我可以怎样改变它,使它在列而不是行中打印出来吗?我希望它读取 CSV 文件......做一些计算......然后以与它进来时相同的格式打印回一个 CSV 文件(如果有意义的话)。
-
如果您只是想将字典保存在文件中(您似乎正在编写它并再次读取它),我不建议使用 CSV。相反,只是将字典序列化并将其写入文件,python 有一个非常好的模块,称为 Shelve,它很好地自动化了这个过程:docs.python.org/2/library/shelve.html
-
你为什么对 CSV 文件使用 delimiter=' ',你不希望它是 delimiter=',' 这是默认值。
标签: python csv dictionary