Python提取JSON文件中的指定数据并保存在CSV或Excel表格文件内

简介: Python提取JSON文件中的指定数据并保存在CSV或Excel表格文件内

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

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

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

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

  明确了需求,我们就可以开始撰写代码。这里需要注意,在本文代码中需要用到Pythonjson库,关于这一个库的配置,大家可以参考文章Mac系统Anaconda环境配置Python的json库https://blog.csdn.net/zhebushibiaoshifu/article/details/132565661)。

  首先,介绍将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

相关文章
|
23天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
1月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
136 5
|
2月前
|
存储 数据挖掘 Java
csv和excel
【10月更文挑战第18天】csv和excel
108 5
|
22天前
|
Python
按条件将Excel文件拆分到不同的工作表
使用Python的pandas库,可以轻松将Excel文件按条件拆分到不同的工作表中。本文通过一个示例代码展示了如何生成一个包含总成绩表和三个班级表的Excel文件。代码首先创建了一个包含学生姓名、班级和各科成绩的数据框,然后按班级分组,将每个班级的数据分别写入不同的工作表。最后,生成的Excel文件将包含四个工作表,分别为总成绩表和三个班级的成绩表。
28 6
按条件将Excel文件拆分到不同的工作表
|
21天前
|
Python
批量将不同的工作簿合并到同一个Excel文件
本文介绍如何使用Python的`pandas`库批量合并不同工作簿至同一Excel文件。通过模拟生成三个班级的成绩数据,分别保存为Excel文件,再将这些文件合并成一个包含所有班级成绩的总成绩单。步骤包括安装必要库、生成数据、保存与合并工作簿。
31 6
|
21天前
|
Python
按条件将Excel文件拆分到不同的工作表
使用Python的pandas库,可以轻松将Excel文件按条件拆分为多个工作表。本文通过一个具体示例,展示了如何根据学生班级将成绩数据拆分到不同的工作表中,并生成一个包含总成绩表和各班级成绩表的Excel文件。代码简洁明了,适合初学者学习和应用。
34 6
|
1月前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
30 1
|
1月前
|
SQL 数据可视化 数据挖掘
想让Excel表格设计更美观?试试这几款好用工具!
Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
76 2
|
2月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
110 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
70 4