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

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')
输出   n

print('\n')
输出换行

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

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

有两种解决方式:

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

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

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

5、应用

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

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


http://www.kler.cn/news/307049.html

相关文章:

  • RabbitMQ高级篇,进阶内容
  • 【题解】AT_arc035_b [ARC035B] アットコーダー王国のコンテスト事情
  • 手势开关灯
  • 宿舍管理系统的设计与实现 (含源码+sql+视频导入教程)
  • 【Kubernetes】常见面试题汇总(十八)
  • git rev-parse
  • Nginx 文件名逻辑漏洞(CVE-2013-4547)
  • BM5 合并k个已排序的链表
  • 一、机器学习算法与实践_01基本概念与项目流程笔记
  • 一句话描述设计模式
  • 深入分析计算机网络性能指标
  • 无人机培训机构组装调试技术详解
  • 【我的 PWN 学习手札】Fastbin Double Free
  • 【系统分析师】-安全体系
  • 鸿蒙轻内核A核源码分析系列七 进程管理 (2)
  • 华为OD机试真题E卷-计算网络信号(含题目描述+解题思路+代码解析)
  • 记录一下gitlab社区版的安装教程
  • 通过TensorBoard查看服务器训练过程
  • 【LeetCode】每日一题 2024_9_15 与车相交的点(差分)
  • C语言编译原理
  • Parallels Desktop 20 发布下载,macOS Sequoia 和 Windows 11 24H2 支持准备就绪
  • 红外成像人员检测数据集
  • 基于C#+Mysql实现(界面)企业的设备管理系统
  • leetcode18-27
  • 谷歌在在线展示广告技术上的垄断,Meta无法有效竞争
  • 【机器学习】8 ——朴素贝叶斯
  • C++ primer chapter 12
  • 中秋献礼!2024年中科院一区极光优化算法+分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测
  • Rabbitmq中得RPC调用代码详解
  • MySQL学习(视图总结)