当前位置: 首页 > news >正文

Python 解析 JSON 数据

1、有如下 JSON 数据,存放在 data.json 文件:

[{"id":1, "name": "小王", "gender": "male", "score": 96.8},
{"id":2, "name": "小婷", "gender": "female", "score": 95.5},
{"id":3, "name": "小崔", "gender": "male", "score": 80.5}]

2、写一个 python 脚本(test1.py)解析这个文件:

# 导入 python 内置的 json 模块
import json# 读取 JSON 文件
input_path = r"C:\Users\Administrator\Desktop\py\study\data.json"
# 解析完的 JSON 数据存放的输出文件
output_path = r"C:\Users\Administrator\Desktop\py\study\result.txt"# 以只读(r:read)的方式打开 输入文件
with open(input_path, 'r', encoding='utf-8') as file:# 将 JSON 数据加载到变量 data 中data = json.load(file)# 以追加 (a:append) 的方式打开 输出文件
output_file=open(output_path, 'a', encoding='utf-8')# 如果 JSON 数据是一个列表,可以遍历列表中的元素
if isinstance(data, list):# enumerate 函数可以方便地同时获取索引(i)和元素值(item)for i, item in enumerate(data):# \n 转义字符,换行的意思 i 是个数字,需要用 str() 函数转换为字符串类型# 打印在屏幕print('\n'+str(i+1)+'、'+item['name']+'的个人资料')# 输出在文件output_file.write('\n'+str(i+1)+'、'+item['name']+'的个人资料')output_file.write('\n 性别:'+item['gender']) output_file.write('\n 得分:'+str(item['score']))# 关闭文件,防止资源泄露
output_file.close()

3、在脚本所在路径,打开 powershell.exe,运行这个脚本:

result.txt 输出数据如下:


像这种简单的脚本程序,现在都可以叫 AI (比如豆包) 帮我们写:


4、扩展:

字符串前面加 r 是什么意思?

r/R  字符串前面加大R或者小r,是原始字符串。所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。

我们知道,\  反斜杠在python中是转义字符,比如 \n 就是 换行。转换了原来 n 字符的原始意思,变为 换行。

print('n')
输出   nprint('\n')
输出换行

而 window 系统中,磁盘路径,又都是用 \ 反斜杠表示的,

如果直接把它作为文件路径,python 会报错:

有两种解决方式:

1)\\   两个反斜杠,字面意思,以 \ 转义掉原来 \ 转义的含义,变为输出 \

但这毕竟比较麻烦,所以有第二种方法

2)在字符串前面加 r,忽略掉字符串里面 \ 的转义含义,让它原样输出 \

5、应用

python 解析 JSON 文件的应用很广泛,就比如,可以用来解析,抓包软件 Charles 的 session 文件。 

Python 解析 Charles JSON Session File (.chlsj)-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 开源模型应用落地-qwen模型小试-调用Qwen2-VL-7B-Instruct-更清晰地看世界(一)
  • 配置与变更管理考点提要
  • TeamTalk梳理概括
  • 带你走进vue3
  • Porcupine - 语音关键词唤醒引擎
  • Vue 3有哪些新特性
  • Linux5-echo,>,tail
  • 站群服务器适用于哪些场景当中?
  • 算法入门-贪心1
  • wordpress源码资源站整站打包32GB数据,含6.7W条资源数据
  • vscode中如何配置c/c++环境
  • C++ Linux多线程同步通信-信号量
  • Linux系统应用之知识补充——OpenEuler(欧拉)的安装和基础配置
  • linux-centos 设置系统时间
  • python selenium网页操作
  • 5、React组件事件详解
  • CAP 一致性协议及应用解析
  • ComponentOne 2017 V2版本正式发布
  •  D - 粉碎叛乱F - 其他起义
  • go append函数以及写入
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript 基础知识 - 入门篇(一)
  • JS字符串转数字方法总结
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • VuePress 静态网站生成
  • 分享几个不错的工具
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 关于Java中分层中遇到的一些问题
  • 利用DataURL技术在网页上显示图片
  • 扑朔迷离的属性和特性【彻底弄清】
  • 如何用vue打造一个移动端音乐播放器
  • 学习笔记:对象,原型和继承(1)
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 选择阿里云数据库HBase版十大理由
  • ​Python 3 新特性:类型注解
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (1)(1.9) MSP (version 4.2)
  • (2)Java 简介
  • (C++)八皇后问题
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (Ruby)Ubuntu12.04安装Rails环境
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • .mysql secret在哪_MySQL如何使用索引
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .net专家(高海东的专栏)
  • @Autowired标签与 @Resource标签 的区别
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [20170728]oracle保留字.txt
  • [BUUCTF 2018]Online Tool(特详解)
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [CC2642R1][VSCODE+Embedded IDE+IAR Build+Cortex-Debug] TI CC2642R1基于VsCode的开发环境