• Python提取JSON数据中的键值对并保存为.csv文件


      本文介绍基于Python,读取JSON文件数据,并将JSON文件中指定的键值对数据转换为.csv格式文件的方法。

      在之前的文章Python提取JSON文件中的指定数据并保存在CSV或Excel表格文件内(https://blog.csdn.net/zhebushibiaoshifu/article/details/132572161)中,我们就介绍过将JSON文件数据保存到.csv格式或.xlsx格式的表格文件中的方法;而本文我们将针对不同的待提取数据特征,给出另一种方法。

      首先,我们来明确一下具体的需求。我们现有一个JSON文件数据,是一个包含多个JSON对象的列表,如下图所示;其中,我们希望将text中的内容提取出来——text中的数据都是以键值对的形式存储的,我们希望的是,将键值对作为.csv格式文件的列名,而则是这一列对应的值;因为这个JSON数据中包含很多个text(每一个text中的所有都是一样的,但是不完全一致),所以我们最后就会得到一个具有很多行的.csv格式文件。

      明确了需求,我们就可以开始代码的撰写。本文所用代码如下。

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Created on Fri Sep 15 11:12:01 2023
    
    @author: fkxxgis
    """
    
    import json
    import csv
    
    json_file = "/Users/ddd/Downloads/single.json"
    
    with open(json_file, 'r') as file:
        data = json.load(file)
    
    fieldnames = set()
    for item in data:
        fieldnames.update(json.loads(item['text']).keys())
    
    csv_filename = "/Users/didi/Downloads/output.csv"
    
    with open(csv_filename, 'w', newline='') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for item in data:
            json_string = item['text']
            row_data = json.loads(json_string)
            writer.writerow(row_data)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

      其中,我们首先通过import语句导入必要的Python模块,包括用于处理JSON数据的json和用于处理CSV文件的csv

      接下来,我们打开名为single.jsonJSON文件并读取其内容,将其存储在data变量中。json.load(file)用于将JSON文件内容加载到Python数据结构中。随后,创建一个空集合fieldnames,用于存储将在CSV文件的头部写入的列名。

      紧接着,我们遍历data列表中的每个元素,其中每个元素是一个包含JSON格式的字符串的字典。对于每个元素,将JSON文本——也就是item['text']解析为字典,并获取该字典中的所有键。这些键将被添加到fieldnames集合中,以便稍后在CSV文件的头部(列名称)使用。

      其次,创建一个CSV文件output.csv以进行写入,使用csv.DictWriter对象初始化,其中指定了要写入的列名(通过fieldnames变量)。使用writer.writeheader()写入CSV文件的头部,这将包含字段名称。最后,遍历data列表中的每个元素,对于每个元素,将JSON文本解析为字典,并将该字典的数据写入CSV文件中,每行对应一个JSON对象。

      执行上述代码,我们即可在指定的结果.csv格式文件中看到我们转换之后的数据结果;如下图所示。其中,紫色框内部分就是列名,也就是我们提取出来的,而则是每一行的数据。

      至此,大功告成。

    欢迎关注:疯狂学习GIS

  • 相关阅读:
    Games 103 作业二
    【技术美术知识储备】纹理基础2.0-凹凸映射
    青云1000------华为昇腾310
    垃圾回收 - 标记压缩算法
    数据结构考研第六章——图(内含动图)
    《统计学习方法》 第九章 EM算法(原理+代码)
    华为政企管理软件产品集
    解析ERP管理系统的实施难题及解决方案
    Logstash 部署及基础使用
    Vue3使用render画图标实践
  • 原文地址:https://blog.csdn.net/zhebushibiaoshifu/article/details/132913240