d = {“A”:85,“B”:70,“C”:40}
我需要将其写为.csv文件,标题为“标题,分数”
我试了两种方法,但都不管用。
方法1:
f= open('score.csv','w')
f.write('Title,Score\n')
a = str(d)
for item in a.strip('{}').split(','):
item.replace(':',',')
f.write(item)
f.close()
当我打开score.csv时,我不知道为什么它什么也没有显示。
方法二:
f= open('score.csv','w')
f.write('Title,Score\n')
with open('score.csv','w') as f:
for title in d.keys():
f.write('%s,%s\n'%(title,str(d[title]))
4条答案
按热度按时间u2nhd7ah1#
使用Pandas可以在单行中完成任务
逻辑
输出csv#
3ks5zfa02#
你的代码的第二次迭代,“方法2”,就是你想要的。它“不运行”的原因是因为这一行:
你得到的错误是“意外的文件结尾”,你的程序文件被列为文件。如果你仔细看,你会发现你有三个左括号,但你只有两个右括号。添加一个括号,它 * 几乎 * 工作完美。仍然有一点阻碍它是这样的:
你以
f
的形式打开一个文件,写入数据,然后--不关闭它--以f
的形式打开 * 另一个 * 文件,写入新的数据。第一个f
文件对象的缓冲区永远不会被写入文件,所以你永远不会得到CSV文件的头文件。对代码的这些小修改将起到作用:
我忘了:你不需要
f.write()
中的str()
。o7jaxewo3#
要编写.CSV文件,请使用
csv
模块。请确保使用文档中说明的newline=''
参数。有关原因,请参阅this answer。对于这个简单的例子来说,这并不重要,但是
csv
模块也会正确地引用包含列分隔符的字段,并对嵌入的引号进行转义。score.csv:
Excel表格:
6qqygrtg4#
一个过于简单但有效的解决方案:
然后将
csv_string
写入文件。