Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python从json在csv中添加日期时间值?_Python_Arrays_Json_Csv - Fatal编程技术网

如何使用python从json在csv中添加日期时间值?

如何使用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,

我正在尝试使用python将包含多个数组和对象json的嵌套json转换为CSV文件。我尝试了很多方法,但是我得到的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"
       },  
      ]
输出为:

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'],"",""])