相关文章推荐
怕老婆的柠檬  ·  Perl ...·  8 月前    · 
沉稳的鸭蛋  ·  spark ...·  1 年前    · 
坏坏的灌汤包  ·  objective c - IOS ...·  1 年前    · 
爱喝酒的雪糕  ·  WITH ...·  1 年前    · 
首页 > 脚本专栏 > python > Python提取json数据

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

作者:疯狂学习GIS

这篇文章主要为大家详细介绍了如何基于Python实现读取JSON文件数据,并将JSON文件中指定的键值对数据转换为.csv格式文件,感兴趣的小伙伴可以了解下

在之前的文章 Python提取JSON文件中的指定数据并保存在CSV或Excel表格文件内 中,我们就介绍过将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)

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

接下来,我们打开名为single.json的JSON文件并读取其内容,将其存储在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格式文件中看到我们转换之后的数据结果;如下图所示。其中,紫色框内部分就是列名,也就是我们提取出来的键,而值则是每一行的数据。

至此,大功告成。

到此这篇关于Python实现提取JSON数据中的键值对并保存为.csv文件的文章就介绍到这了,更多相关Python提取json数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • Python使用0初始化字典的常用方法小结
    Python使用0初始化字典的常用方法小结
    2024-02-02
  • 解决python中的print函数自动换行的问题
    解决python中的print函数自动换行的问题
    2024-02-02
  • 在服务器上运行python文件详细步骤
    在服务器上运行python文件详细步骤
    2024-02-02
  • 使用matplotlib修改坐标轴,将y轴的间距设置为某一个值
    使用matplotlib修改坐标轴,将y轴的间距设置为某一个值
    2024-02-02
  • python中csv文件数据颜色设置方式
    python中csv文件数据颜色设置方式
    2024-02-02
  • python如何读取指定csv单元格
    python如何读取指定csv单元格
    2024-02-02
  • python如何获取.csv文件中的某一列或者某些列
    python如何获取.csv文件中的某一列或者某些列
    2024-02-02
  • Python绘制三维立体图详解与绘图填充方式
    Python绘制三维立体图详解与绘图填充方式
    2024-02-02
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2024 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号