我正在解析某些文本文件,并在以下结构中跟踪许多程序,软件版本以及这些版本的出现次数:
{Excel: {'1.2.1':2, '2.1.1':55, '3.4.5':12},
Adobe: {'1.1.1':4, '5.4.4':12, '4'3.3':8}[...]}
等
如何将其整齐地打印到CSV,以便输出如下所示:
Program,Version,Count
Excel,1.2.1,2
Excel,2.1.1,55
Excel,3.4.5,12
Adobe,1.1.1,4
Adobe,5.4.4,12
Adobe,4.3.3,8
我做了很多搜索,但却找不到我需要的东西。任何帮助表示赞赏!
编辑:
这是我尝试过的,我觉得这很接近,但根据我得到的输出不正确:
for prod,version in products.iteritems():
for p in prod:
for v in version:
outfile.write('%s,%s,%d\n' % (p,v,version[v]))
其中products是外部字典的名称。
感谢。
答案 0 :(得分:1)
黑客的方式:
def print_csv_data(data):
with open('my_output', 'w') as f:
f.write('Program,Version,Count')
for k, v in data.iteritems():
for id, count in v.iteritems():
f.write(k+','+id+','+count)
我建议您查看CSV module以便更好地使用,因为如果您的ID或程序名称包含逗号,上述方法很容易破坏您的文档。
import csv
with open('output.csv', 'w') as csvfile:
fieldnames = ['Program', 'Version', 'Count']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for k, v in data.iteritems():
for id, count in v.iteritems():
f.write({'Program':k, 'Version':id, 'Count':count})