![](/img/trans.png)
[英]How to create a dictionary in Python from a csv considering the date and time values?
[英]How to add date time values in csv from json using python?
我正在尝试使用python将具有多个数组和对象json的嵌套json转换为CSV文件。 我尝试了许多方法,以某种方式仅用1个数组获得了csvfile。 我想打印许多具有唯一值的过滤器,所以我无法打印第二个数组,其成本为我的示例json,如下所示:
JSON示例:
{
"breakdown":[
{
"filter":"tags",
"cost":5517.734,
"values":[
{
"count":13,
"subvalues":[
{
"count":1,
"subvalue":"BizOps-VM-20",
"cost":227.576
{
"count":4,
"subvalue":"<nulltagvalue>",
"cost":70.358
},
"subvalues":[
{
"count":2,
"subvalue":"cb",
"cost":4.584
}
],
"cost":4.584,
"value":"TagNewForTestw"
}
]
},
{
"filter":"account",
"cost":2954.905,
"values":[
{
"count":86,
"cost":1613.508,
"value":"628455167342"
},]
},
"time":[
{
"cost":112.793,
"time":"2017-05-16"
},
{
"cost":112.748,
"time":"2017-05-17"
},
{
"cost":112.739,
"time":"2017-05-18"
},
]
现在这里我有一个时间数组,其中时间和成本在json中,我希望它使用python代码在csv中打印,但是当尝试打印时,我得到的是######格式来代替时间值。 还有一件事是,即使在数组时间结束后,我也得到了重复的时间值打印。
我的python代码:
import json
import csv
import time
f = open('cost_drilldown_data.json')
data = json.load(f)
s=csv.writer(open('cd13old.csv','w'))
s.writerow(["filter","cost","value","cost","subvalue","cost"])
i=0
for breakdown in data['breakdown']:
for values in breakdown['values']:
if 'subvalues' in values:
for subvalues in values['subvalues']:
for time in data['time']:
s.writerow([breakdown['filter'],breakdown["cost"],
values['value'],values['cost'],subvalues["subvalue"],
subvalues["cost"],time['time'],time['cost']])
else :
s.writerow([breakdown['filter'],"","",values['value'],values['cost']])
输出为:
filter,cost,value,cost,subvalue,cost,time,cost
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-16,112.793
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-17,112.748
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-18,112.739
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-19,107.165
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-20,89.988
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-21,88.773
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-22,96.591
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-23,104.809
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-24,104.471
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-25,104.472
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-26,103.536
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-27,83.205
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-28,83.103
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-29,83.111
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-30,84.555
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-31,86.986
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-01,103.024
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-02,100.905
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-03,102.062
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-04,105.243
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-05,105.134
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-06,111.764
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-07,107.455
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-08,107.62
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-09,107.61
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-10,102.53
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-11,102.282
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-12,105.52
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-13,93.617
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-06-14,41.094
标签,5517.734,名称,462.62,70.358,2017-05-16,112.793
标签,5517.734,名称,462.62,70.358,2017-05-17,112.748
标签,5517.734,名称,462.62,70.358,2017-05-18,112.739
它一次又一次地打印值,我尝试使用迭代,但没有使用abe来停止值的表示。 所以任何人都可以在这里帮助或指导我
预期的输出是:
过滤器,成本,价值,成本,子值,成本,时间成本
标签,5517.734,名称,462.62,BizOps-VM-20,227.576,2017-05-16,112.793标签,5517.734,名称,462.62,,70.358,2017-05-16,112.793标签,5517.734,名称,462.62,BizOps01,60.188,2017-06 -10,102.53
with open('cd13old.csv','w') as csvfile:
s=csv.writer(csvfile)
s.writerow(["filter","cost","value","cost","subvalue","cost"])
for breakdown in data['breakdown']:
for values in breakdown['values']:
if 'subvalues' in values:
for subvalues in values['subvalues']:
s.writerow([breakdown['filter'],values['value'],values['cost'],subvalues["subvalue"],subvalues["cost"]])
else:
s.writerow([breakdown['filter'],values['value'],values['cost'],"",""])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.