如何使用python从json在csv中添加日期时间值?
我正在尝试使用python将包含多个数组和对象json的嵌套json转换为CSV文件。我尝试了很多方法,但是我得到的csvfile只有一个数组。我想打印许多内部具有唯一值的过滤器,因此我无法打印第二个数组,我的示例json如下: 示例JSON:如何使用python从json在csv中添加日期时间值?,python,arrays,json,csv,Python,Arrays,Json,Csv,我正在尝试使用python将包含多个数组和对象json的嵌套json转换为CSV文件。我尝试了很多方法,但是我得到的csvfile只有一个数组。我想打印许多内部具有唯一值的过滤器,因此我无法打印第二个数组,我的示例json如下: 示例JSON: { "breakdown":[ { "filter":"tags", "cost":5517.734, "values":[ { "count":13,
{
"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"
},
]
输出为:
filter,cost,value,cost,subvalue,cost,time,cost
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-16112.793
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-17112.748
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-18112.739
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-19107.165
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-20,89.988
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-21,88.773
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-22,96.591
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-23104.809
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-24104.471
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-25104.472
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-26103.536
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-27,83.205
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-28,83.103
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-29,83.111
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-30,84.555
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-31,86.986
标签,5517.734,名称,462.62,BizOps-VM-20227.5762017-06-01103.024
标签,5517.734,名称,462.62,BizOps-VM-20227.5762017-06-02100.905
标签,5517.734,名称,462.62,BizOps-VM-20227.5762017-06-03102.062
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-04105.243
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-05105.134
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-06111.764
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-07107.455
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-08107.62
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-09107.61
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-10102.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'],"",""])
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-11102.282
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-12105.52
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-13,93.617
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-06-14,41.094
标签,5517.734,姓名,462.62,,70.3582017-05-16112.793
标签,5517.734,姓名,462.62,,70.3582017-05-17112.748
标签,5517.734,姓名,462.62,,70.3582017-05-18112.739
它一次又一次地打印值,我尝试使用迭代,但没有使用abe来停止值的复制。所以任何人都可以在这里帮助或指导我我被卡住了
预计产量为:
过滤器,成本,价值,成本,子价值,成本,时间,成本
标签,5517.734,姓名,462.62,BizOps-VM-20227.5762017-05-16112.793
标签,5517.734,姓名,462.62,,70.3582017-05-16112.793
tags,5517.734,Name,462.62,BizOps01,60.1882017-06-10102.53问题可能出在输入数据中。但由于您的示例包含太多问题(缺少逗号、不连贯的缩进、不完整的json),我无法告诉您更多。如果您希望我们能够帮助您,请编写一个有效的json输入并修复其缩进。@SergeBallesta,完成缩进请原谅json,因为它是巨大的数据,我不能粘贴在这里,请指导我如何使用if loop来满足空关键字这就像我想打印过滤器:帐户和下面的许多过滤器是有它好使用ifloop或我可以使用任何建议或帮助循环是需要的,因为我陷入这个!!请修复输入字符串,使其成为有效的json。现在不可能解析它。除非您提供有效的输入,否则我怀疑是否有人会帮助您。是的,仅此而已,我请求帮助如何修改一些if条件,如if'subvalues'未在细分中:continue s.writerow(“…”),但如果我在下面为value['subvalues'中的子值添加此项,则不会进入内部:如果“子值”不在子值中:请继续s.writerow([breakdown['filter']、breakdown['cost']、values['value']、values['cost']、subvalues['subvalues']、subvalues['cost'])对于数据中的细分['breakdown']:对于细分中的值['values']:对于值中的子值['subvalues']:#如果subvalues不在值中:如果'subvalues'不在'values'中:break s.writerow([breakdown['filter']、breakdown['cost']、value['value']、value['cost']、subvalues['subvalues']、subvalues['cost']])我已经尝试过这个方法,但也没有来进行数据细分['breakdown']:对于细分['values']中的值:对于值['subvalues']['values']中的子值:#如果子值不在值中:如果“subvalues”不在“values”中:中断错误:对于值['subvalues']['values'中的子值:#如果子值不在值中:TypeError:列表索引必须是整数,而不是strkirsz非常感谢它真的帮助我解决了错误,你太棒了!!!谢谢你的帮助,我将从你的编码中了解如何编码,
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'],"",""])