簡體   English   中英

在Python中將嵌套的字典打印為CSV

[英]Printing nested dicts to CSV in Python

我正在解析某些文本文件,並以以下結構跟蹤許多程序,軟件版本以及這些版本的出現次數:

{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]))

產品是外部字典的名稱。

謝謝。

駭客方式:

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模塊,以更好地使用它,因為如果您的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})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM