Python提取JSON数据并保存为表格文件的方法
off999 2024-11-22 19:03 19 浏览 0 评论
??本文介绍基于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
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
相关推荐
- 阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?
-
TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...
- 高流量大并发Linux TCP性能调优_linux 高并发网络编程
-
其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...
- 性能测试100集(12)性能指标资源使用率
-
在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...
- Linux 服务器常见的性能调优_linux高性能服务端编程
-
一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...
- Nginx性能优化实战:手把手教你提升10倍性能!
-
关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...
- 高并发场景下,Spring Cloud Gateway如何抗住百万QPS?
-
关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...
- Kubernetes 高并发处理实战(可落地案例 + 源码)
-
目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...
- 高并发场景下,Nginx如何扛住千万级请求?
-
Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...
- Spring Boot+Vue全栈开发实战,中文版高清PDF资源
-
SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...
- Docker-基础操作_docker基础实战教程二
-
一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...
- 你有空吗?跟我一起搭个服务器好不好?
-
来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...
- 部署你自己的 SaaS_saas如何部署
-
部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...
- Docker Compose_dockercompose安装
-
DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...
- 京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统
-
前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...
- Kubernetes (k8s) 入门学习指南_k8s kubeproxy
-
Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
