• 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

  • 相关阅读:
    单元测试详解
    Workfine新手入门:日期间隔函数范围判断
    2024超好看的404单页HTML源码
    随机场的生成 random field generation-考虑相关长度-GSTOOL
    【斗破年番】火火抱彩鳞把她整害羞啦!女王解锁新造型,身形丰满超有料
    栅栏涂色题
    利用正则表达式进行爬取数据以及正则表达式的一些使用方法
    Smart UI Web 16.0.1 WebComponents htmlelements Crack
    Halcon 从基础到精通-01- 基本概念
    LLM实战:当网页爬虫集成gpt3.5
  • 原文地址:https://blog.csdn.net/zhebushibiaoshifu/article/details/132913240