【问题标题】:How to convert json to csv python with proper headers如何使用正确的标题将 json 转换为 csv python
【发布时间】:2022-11-24 00:26:19
【问题描述】:

试图将 Json 数据转换为 csv,我正在获取值,但一个块在结果中显示为一行,对 python 来说是新的,因此需要任何帮助。已尝试使用以下代码来执行相同的操作。

import pandas as pd

with open(r'C:\Users\anath\hard.json', encoding='utf-8') as inputfile:
    df = pd.read_json(inputfile)

    df.to_csv(r'C:\Users\anath\csvfile.csv', encoding='utf-8', index=True)

源文件中的示例 Json,简称 sn-p

{
  "issues": [
    {
      "issueId": 110052,
      "revision": 84,
      "definitionId": "DNS1012",
      "subject": "urn:h:domain:fitestdea.com",
      "subjectDomain": "fitestdea.com",
      "title": "Nameserver name doesn\u0027t resolve to an IPv6 address",
      "category": "DNS",
      "severity": "low",
      "cause": "urn:h:domain:ns1.gname.net",
      "causeDomain": "ns1.gname.net",
      "open": true,
      "status": "active",
      "auto": true,
      "autoOpen": true,
      "createdOn": "2022-09-01T02:29:09.681451Z",
      "lastUpdated": "2022-11-23T02:26:28.785601Z",
      "lastChecked": "2022-11-23T02:26:28.785601Z",
      "lastConfirmed": "2022-11-23T02:26:28.785601Z",
      "details": "{}"
    },
    {
      "issueId": 77881,
      "revision": 106,
      "definitionId": "DNS2001",
      "subject": "urn:h:domain:origin-mx.stagetest.test.com.test.com",
      "subjectDomain": "origin-mx.stagetest.test.com.test.com",
      "title": "Dangling domain alias (CNAME)",
      "category": "DNS",
      "severity": "high",
      "cause": "urn:h:domain:origin-www.stagetest.test.com.test.com",
      "causeDomain": "origin-www.stagetest.test.com.test.com",
      "open": true,
      "status": "active",
      "auto": true,
      "autoOpen": true,
      "createdOn": "2022-08-10T09:34:36.929071Z",
      "lastUpdated": "2022-11-23T09:33:32.553663Z",
      "lastChecked": "2022-11-23T09:33:32.553663Z",
      "lastConfirmed": "2022-11-23T09:33:32.553663Z",
      "details": "{\"@type\": \"hardenize/com.hardenize.schemas.dns.DanglingProblem\", \"rrType\": \"CNAME\", \"rrDomain\": \"origin-mx.stagetest.test.com.test.com\", \"causeDomain\": \"origin-www.stagetest.test.com.test.com\", \"danglingType\": \"nxdomain\", \"rrEffectiveDomain\": \"origin-mx.stagetest.test.com.test.com\"}"
    }
    }
  ]
}

我得到的输出如下所示,正在寻找一种方法,到目前为止,标题中的字段名称和列或单元格中的值可以在 1 个单元格中获取整个记录。我们只能通过任何方式获取特定字段,例如标题、严重性或问题 ID,而不是所有内容,而只是我需要的字段。

【问题讨论】:

    标签: json python-3.x csv


    【解决方案1】:

    尝试这个...

    df = pd.json_normalize(输入文件)

    代替你的线路。

    【讨论】:

      【解决方案2】:

      尝试:

      import json
      
      with open("your_file.json", "r") as f_in:
          data = json.load(f_in)
      
      df = pd.DataFrame(data["issues"])
      print(df[["title", "severity", "issueId"]])
      

      印刷:

                                                      title severity  issueId
      0  Nameserver name doesn't resolve to an IPv6 address      low   110052
      1                       Dangling domain alias (CNAME)     high    77881
      

      要另存为 CSV,您可以执行以下操作:

      df[["title", "severity", "issueId"]].to_csv('data.csv', index=False)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-18
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 2018-01-04
        • 2019-02-23
        • 2021-09-01
        相关资源
        最近更新 更多