我有一个python默认dict,如下面的结果所示。我需要在csv文件中打印它们,如所需的输出所示。
print(result_fruit)
defaultdict(<class 'collections.Counter'>,
{ 'word': Counter({ 'Tom_success': 5,
'Jerry_Success': 4}),
'pdf': Counter({ 'Tom_success': 1,
'Jerry_success': 3}),
})
csv中的所需输出:
mime Tom_success Jerry_success
word 5 4
pdf 1 3
我的csv中的输出被破坏,光标没有进入下一列:
mime Tom_success Jerry_success
word
5
4
pdf
1
3
我的代码:
with open('output.csv', 'w') as f:
writer = csv.writer(f,delimiter =',')
writer.writerow( ('mime','Tom_success','Jerry_success') )
for mime in result_fruit:
f.write('{}\n'.format(mime))
for category_success in sorted(result_fruit[mime]):
writer.writerow('{}'.format(result_fruit[mime][category_success]))
答案 0 :(得分:2)
对于每行输出,只需调用.writerow()
一次。传递.writerow()
该行中项目的列表或元组。
试试这个:
with open('output.csv', 'w') as f:
writer = csv.writer(f, delimiter=',')
writer.writerow(('mime', 'Tom_success', 'Jerry_success'))
for mime, data in result_fruit.items():
writer.writerow([mime, data['Tom_success'], data['Jerry_success']])
或者,您可以使用csv.Dictwriter
。再次,为每行输出调用.writerow()
一次。
with open('output.csv', 'w') as f:
writer = csv.DictWriter(f, ['mime', 'Tom_success', 'Jerry_success'])
writer.writeheader()
for mime, data in result_fruit.items():
row = {'mime': mime}
row.update(data)
writer.writerow(row)
答案 1 :(得分:0)
您告诉它将密钥和元素写在不同的行上
for mime in result_fruit:
f.write('{}\n'.format(mime))
# writes the key, and \n
for category_success in sorted(result_fruit[mime]):
writer.writerow('{}'.format(result_fruit[mime][category_success]))
# does a writerow for each element of the list.
等效动作,带有常规字典和打印
In [200]: dd = {'word': [5,4], 'pdf':[1,3]}
In [201]: for key in dd:
...: print(key)
...: for v in dd[key]:
...: print(v)
...:
word
5
4
pdf
1
3
你想要一个更像这样的文件写:
In [205]: for key in dd:
...: print(key, end='\t')
...: for v in dd[key]:
...: print(v, end='\t')
...: print()
...:
word 5 4
pdf 1 3
您甚至可以坚持使用print
功能并添加file
参数。
我没有足够使用csv
模块来建议直接解决方案。