如何在列中只打印一次标题值,并在从json转换为csv时将空白留到csv中的下一个标题

时间:2017-07-10 12:05:59

标签: python json csv

我有一个python代码,用于将json转换为csv文件。 当我转换时,我能够看到特定标题打印在我不需要的连续列中。

我的python代码:

import json, csv, datetime

f = open('cost_drilldown_data.json')
data = json.load(f)
s = csv.writer(open('cd23old.csv', 'w'))
s.writerow(["filter", "cost", "value", "cost", "subvalue", "cost", "time", "cost"])

for breakdown in data['breakdown']:
    for time in data['time']:
        for values in breakdown['values']:
            if 'subvalues' in values:
                for subvalues in values['subvalues']:
                    s.writerow([breakdown['filter'],
                                breakdown["cost"],
                                values['value'],
                                values['cost'],
                                subvalues["subvalue"],
                                subvalues["cost"],
                                time["time"][0]["time"],
                                time["cost"]]
                               )
            else:
                s.writerow([breakdown['filter'], "", "", values['value'], values['cost']])
  

我在csv中的实际输出:

filter,cost,value,cost,subvalue,cost,time,cost
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-16,112.793
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-17,112.748
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-18,112.739
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-19,107.165
account,628455167342,1613.508,,
account,85f05078-74e0-4015-aad3-84ff7e111023,1341.397,,
project_id,813,2954.905,,
provider,aws,1613.508,,
provider,azure,1341.397,,
     

但我希望这样:

filter,cost,value,cost,subvalue,cost,time,cost
tags,     5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-16,112.793
          5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-17,112.748
          5517.734,Name,462.62,BizOps-VM-20,227.576,2017-05-18,112.739
account,  628455167342,1613.508,
          628455167342,1613.508,
provider ,aws,1613.508,,
          aws,1613.508,

我只希望左边的过滤器标题只打印一次。 我怎么能这样做任何帮助赞赏!!!

0 个答案:

没有答案