添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首页 > 脚本专栏 > python > Python提取JSON数据

Python实现提取JSON文件中指定数据并保存至CSV或Excel内

作者:疯狂学习GIS

这篇文章主要介绍了如何基于Python语言实现读取JSON格式的数据,并将提取到的数据保存到.csv格式或.xlsx格式的表格文件中,感兴趣的小伙伴可以了解下

本文介绍基于 Python 语言,读取 JSON 格式的数据,提取其中的指定内容,并将提取到的数据保存到 .csv 格式或 .xlsx 格式的表格文件中的方法。

JSON 格式的数据在数据信息交换过程中经常使用,但是相对而言并不直观;因此,有时我们希望将 JSON 格式的数据转换为 Excel 表格文件数据;这里就介绍一下基于 Python 语言,将 JSON 数据转换为 .csv 格式与 .xlsx 格式数据的方法。

首先,来看一下我们的需求。我们现在基于 Postman 软件,获得了某一个网站中,以 JSON 格式记录的大量数据,其中部分数据如下图所示(这里是大量数据样本中的 1 条样本)。这里关于 Postman 获取网站数据的方法,大家如果有需要,可以参考文章 Postman软件基本用法:浏览器复制请求信息并导入到软件从而测试、发送请求

我们现在希望实现的是,将上述 JSON 数据中的文字部分(也就是有价值的信息部分)提取出来,并保存在一个 Excel 表格文件中;其中,不同的 就是不同的 信息属性 ,不同的 就是不同的 样本

明确了需求,我们就可以开始撰写代码。这里需要注意,在本文代码中需要用到 Python json 库,关于这一个库的配置,大家可以参考文章 Mac系统Anaconda环境配置Python的json库

首先,介绍将 JSON 格式数据转换为 .csv 文件数据的代码,具体如下。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
Created on Tue Aug 29 10:22:23 2023
@author: fkxxgis
import json
import csv
with open('/Users/didi/Documents/response.json', 'r') as f:
    data = json.load(f)
with open('/Users/didi/Documents/Data_All.csv', 'w', newline='', encoding='utf-8') as csvfile:
    csvwriter = csv.writer(csvfile)
    header = ["xkzh", "qymc", "gmpZsh", "cym", "shren", "shrq"]
    csvwriter.writerow(header)
    for row in data['rows']:
        xkzh = row['xkzh']
        qymc = row['qymc']
        gmpZsh = row['gmpZsh']
        cym = row['cym']
        shren = row['shren']
        shrq = row['shrq']
        csvwriter.writerow([xkzh, qymc, gmpZsh, cym, shren, shrq])

首先需要说明,上述代码在执行后,我打开新建的 .csv 格式文件,会出现中文字符乱码的情况,如下图所示。

但是用本文接下来的导出为 .xlsx 格式文件的代码就不会有这个问题,所以我当时没有进一步研究乱码出现的原因,就直接用了后续的代码了。如果大家感兴趣,可以对上述代码加以进一步研究。

上述代码的具体含义如下。首先,我们通过 with open('/Users/didi/Documents/response.json', 'r') as f: ,打开名为 response.json 的文件(也就是存储了我们 JSON 格式数据的文件),并将其赋值给变量 f ;这里的 'r' 表示以只读模式打开文件。随后,代码 data = json.load(f) 使用 json.load() 函数加载 JSON 文件中的数据,并将其存储在变量 data 中。

接下来,打开名为 Data_All.csv 的文件,并将其赋值给变量 csvfile 'w' 表示以写入模式打开文件。 newline='' encoding='utf-8' 用于设置写入 .csv 文件时的换行和编码方式。随后, csvwriter = csv.writer(csvfile) 表示创建一个 .csv 写入器,将数据写入 csvfile 文件。

其次,我们即可定义 .csv 文件的表头(列名),以列表形式存储在 header 变量中;随后,通过 csvwriter.writerow(header) 将表头写入 .csv 文件。

紧接着,对于 data 中的每一行数据,执行以下操作—— xkzh = row['xkzh'] 就表示从当前行的字典中提取键为 xkzh 的值,并将其赋值给变量 xkzh ;接下来的其他几行也是这个意思。最后,我们将提取的数据以列表的形式写入 .csv 文件的一行。

接下来,我们介绍将 JSON 格式数据转换为 .xlsx 文件数据的代码,具体如下。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
Created on Tue Aug 29 10:42:26 2023
@author: fkxxgis
import json
from openpyxl import Workbook
with open('/Users/didi/Documents/Veterinary/response_2.json', 'r') as f:
    data = json.load(f)
wb = Workbook()
ws = wb.active
header = ["qymc", "tym", "gg", "spm", "pzwh", "zxbz", "pzrq", "yxq", "sxyy", "bgqk"]
ws.append(header)
for row in data['rows']:
    qymc = row['qymc']
    tym = row['tym']
    gg = row['gg']
    spm = row['spm']
    pzwh = row['pzwh']
    zxbz = row['zxbz']
    pzrq = row['pzrq']
    yxq = row['yxq']
    sxyy = row['sxyy']
    bgqk = row['bgqk']
    ws.append([qymc, tym, gg, spm, pzwh, zxbz, pzrq, yxq, sxyy, bgqk])
wb.save('/Users/didi/Documents/Veterinary/Result_2.xlsx')

上述代码的含义也比较简单。

首先,我们打开名为 response_2.json 的文件,并将其赋值给变量 f 'r' 表示以只读模式打开文件。随后的 data = json.load(f) 表示使用 json.load() 函数加载 JSON 文件中的数据,并将其存储在变量 data 中。

接下来,创建一个新的 Excel 工作簿,将其赋值给变量 wb ;随后,获取工作簿的活动工作表,并将其赋值给变量 ws

紧接着,我们定义 Excel 文件的表头(列名),以列表形式存储在 header 变量中,并将表头写入 Excel 文件的第一行。随后,对于 data 中的每一行数据(假设每一行都是一个字典),执行以下操作——从当前行的字典中提取特定字段的值,并将它们分别赋值给对应的变量。接下来,我们将提取的数据以列表的形式写入 Excel 文件的一行。

最后,即可将 Excel 工作簿保存为名为 Result_2.xlsx 的文件。

运行上述代码,我们即可在 Result_2.xlsx 文件中看到提取到的数据,其中每一行就是一个样本,每一列表示一种属性,且没有出现乱码的情况。如下图所示。

至此,大功告成。

欢迎关注:疯狂学习GIS

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

您可能感兴趣的文章:
  • 如何轻松实现Python数组降维?
    如何轻松实现Python数组降维?
    2024-01-01
  • 使用Python实现Oracle数据库自动巡检程序
    使用Python实现Oracle数据库自动巡检程序
    2024-01-01
  • 精选39道Python数据分析面试题提早备战金三银四
    精选39道Python数据分析面试题提早备战金三银四
    2023-12-12
  • 使用Python Cupy模块加速大规模数值计算实例深究
    使用Python Cupy模块加速大规模数值计算实例深究
    2023-12-12
  • Python轻松获取网络时间和本地时间技巧揭秘
    Python轻松获取网络时间和本地时间技巧揭秘
    2023-12-12
  • 科学Python开发环境Spyder必知必会点
    科学Python开发环境Spyder必知必会点
    2023-12-12
  • Python中的模式匹配库Pampy使用实例解析
    Python中的模式匹配库Pampy使用实例解析
    2023-12-12
  • 提升Python项目整洁度使用import linter实例探究
    提升Python项目整洁度使用import linter实例探究
    2023-12-12
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    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号