本文介绍基于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表格文件中;其中,不同的列就是不同的信息属性,不同的行就是不同的样本。
明确了需求,我们就可以开始撰写代码。这里需要注意,在本文代码中需要用到Python的
json
库,关于这一个库的配置,大家可以参考文章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
withopen('/Users/didi/Documents/response.json','r')as f:
data = json.load(f)withopen('/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
withopen('/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
版权归原作者 疯狂学习GIS 所有, 如有侵权,请联系我们删除。