【问题标题】:Convert Json into CSV将 Json 转换为 CSV
【发布时间】:2019-11-08 16:24:22
【问题描述】:

我有这种格式的 json,想转换成 CSV 文件。

{
  "extrapolationLevel": 1,
  "columnNames": [
    "name",
    "usersession.country",
    "application",
    "usersession.osFamily",
    "usersession.startTime",
    "visuallyCompleteTime"
  ],
  "values": [
    [
      "pdp",
      "Serbia",
      "Desktop",
      "Windows",
      1573215462076,
      1503
    ],

  ]
}

我想把这个 json 转换成 CSV 格式,这是我的脚本

import csv
import json

with open('response_1573222394875.json') as infile:
    Data = json.loads(infile.read())

with open("q.csv", "w") as outfile:
    f = csv.writer(outfile)
    f.writerow(["name","usersession.country","application","usersession.osFamily","usersession.startTime","visuallyCompleteTime"])
    f.writerow([Data["name"], Data["usersession.country"],
                Data["application"],
                Data["usersession.osFamily"],
                Data["usersession.startTime"],
                Data["visuallyCompleteTime"]])

预期输出

 name usersession.country application usersession.osFamilyusersession.startTime visuallyCompleteTime
      pdp      Serbia      Desktop      Windows      1573215462076      1503
      plp      us           APP           Windows      1573215462076      1548
    startpage  uk            Site         Windows      1573215462076      1639
      product  india      Desktop        Windows      1573215462076      3194
       pdp     Vietnam      APP         Windows        1573215462076      3299

请任何人帮助我。

【问题讨论】:

  • [ "product", "india", "HM Desktop", "Windows", 1573215462076, 3194 ], [ "pdp", "Vietnam", "HM Desktop", "Windows", 1573215462076, 3299 ] ] }

标签: python json file parsing export-to-csv


【解决方案1】:

Data 的键是"extrapolationLevel""columnNames""values",仅此而已。例如,Data["usersession.country"] 没有意义,因为该键不存在字典。这些值仅存储在列表中。这是您需要做的所有事情:

with open("q.csv", "w") as outfile:
    f = csv.writer(outfile)
    f.writerow(Data["columnNames"])
    f.writerows(Data["values"])

【讨论】:

    【解决方案2】:
    import json
    
    json_str = '''
    {
      "extrapolationLevel": 1,
      "columnNames": [
        "name",
        "usersession.country",
        "application",
        "usersession.osFamily",
        "usersession.startTime",
        "visuallyCompleteTime"
      ],
      "values": [
        [
          "pdp",
          "Serbia",
          "Desktop",
          "Windows",
          1573215462076,
          1503
        ]
      ]
    }
    '''
    
    data = json.loads(json_str)
    
    csv_row = lambda v: ('"{}",' * len(v)).format(*v)[:-1] # remove trailing comma
    
    print(csv_row(data["columnNames"]))
    for value in data["values"]:
        print(csv_row(value))
    

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 2019-08-21
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多