将 JSON 数据过滤到 CSV 列表中

我的目标是从这个 JSON 文件 (output.json) 中取出主机名,并使用 python 将它们放入 CSV 列表 (newoutput.csv) 中,最终结果如下所示:

主机 1、主机 2、主机 3

有几百个条目,主机名在“specific_data.data.hostname”下

以下是 output.json 文件的片段:

 [

      {

        "adapter_list_length": 3,

        "adapters": [

          ...

        ],

        "internal_id": "...",

        "labels": [

          "...",

          "..."

        ],

        "specific_data.data.hostname": [

          "TheHost1"

        ],

        "specific_data.data.last_seen": "...",

        "specific_data.data.network_interfaces.ips": [

          "...",

          "...",

          "..."

        ],

        "specific_data.data.network_interfaces.mac": [

          "..."

        ],

        "specific_data.data.os.type": [

          "..."

        ]

      },

      {

        "adapter_list_length": 3,

        "adapters": [

          "...",

          "....",

          "...",

          "..."

        ],

        "internal_id": "...",

        "labels": [

          "...",

          "Router"

        ],

        "specific_data.data.hostname": [

          "TheHost2"

        ],

        "specific_data.data.last_seen": "...",

        "specific_data.data.network_interfaces.ips": [

我是 python 的新手,非常感谢任何帮助。


holdtom
浏览 117回答 2
2回答

catspeake

您可以迭代字典列表并使用在每条记录中找到的主机列表扩展“主机”列表。当您拥有所有值时,构建逗号分隔的字符串。import json# python 2.7 needs different openimport codecsfilename = "output.json"# json is usually utf-8 encoded but this is not 100% guaranteeddata = json.loads(codecs.open(filename, encoding="utf-8"))hosts = []for record in data:    if "specific_data.data.hostname" in record:        hosts.extend(record["specific_data.data.hostname"])# assuming hosts are all asciiwith open("hostnames.csv", "w") as fileobj:    fileobj.write(",".join(hosts))    fileobj.write("\n")

白衣染霜花

以下将csv变量设置为以逗号分隔的主机名的字符串。import jsonobject = json.loads(snippet)csv = ', '.join(x['specific_data.data.hostname'][0] for x in object)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python