刚学 Python 的朋友,是不是常遇到这些麻烦?爬了点数据想存起来,用 txt 存得乱七八糟,下次读的时候根本找不到对应内容;调用接口返回一串带括号的文字,看着像字典又不是字典,想取里面的信息半天没头绪;听说 JSON 好用,但不知道怎么用 Python 操作它。别着急,今天兔子哥就带大家从零开始,把 Python 和 JSON 结合起来学,从基础操作到实战案例,保证你看完就能上手。
一、先弄明白:Python 为啥总跟 JSON 搭伙?
咱们先聊聊这俩的关系。JSON 是数据格式,就像装数据的标准箱子;Python 是编程语言,能轻松打开和打包这个箱子。为啥它们总一起出现?因为 Python 里的字典和 JSON 格式特别像,转换起来几乎不用费劲,这对新手太友好了。
你可能会问:“我用 Python 的列表存数据不行吗?” 当然行,但列表存复杂数据容易乱。比如存用户信息,姓名、年龄、爱好这些,用 JSON 的键值对结构,一眼就能看清哪个是哪个,而且存成 JSON 文件,换个设备也能读,这就是它的好处。
二、入门前的准备,这些得先弄好
开始之前,咱们得把环境和工具准备好,很简单,两步就行:
- 安装 Python:去官网下载最新版,一路点 “下一步” 安装,记得勾选 “Add Python to PATH”,不然后面用不了命令。
- 认识 JSON 模块:Python 自带了 json 模块,不用额外安装,直接在代码里 import json 就能用,是不是很方便?
三、核心操作:用 Python 玩转正反 JSON
这部分是重点,咱们分 “把 Python 数据转成 JSON” 和 “把 JSON 转成 Python 数据” 来讲,一步一步来。
操作 1:Python 数据 → JSON 文件(序列化)
简单说就是把 Python 里的字典、列表存成 JSON 文件。步骤如下:
- 准备好 Python 数据,比如一个字典:python
user = {"name": "小李", "age": 20, "hobby": ["打球", "听歌"], "is_student": True} - 用 json.dump () 函数写入文件:python
import json# 打开文件,'w'表示写入,encoding设为utf-8避免中文乱码with open("user.json", "w", encoding="utf-8") as f:json.dump(user, f, ensure_ascii=False, indent=2)
这里 ensure_ascii=False 是让中文正常显示,indent=2 是让 JSON 格式更整齐,有缩进。运行后,文件夹里就会出现 user.json 文件啦。
操作 2:JSON 文件 → Python 数据(反序列化)
反过来,读取 JSON 文件里的数据到 Python 里。步骤也简单:
- 用 json.load () 函数读取:python
import jsonwith open("user.json", "r", encoding="utf-8") as f:data = json.load(f) # 读出来就是Python字典# 试试取数据print("姓名:", data["name"])print("第一个爱好:", data["hobby"][0])
运行后就能看到输出的姓名和爱好,是不是很神奇?
四、实战案例:爬取天气数据存成 JSON
光说不练假把式,咱们来个实战。比如爬取简单的天气数据,存成 JSON 方便查看。
案例步骤:
- 先安装 requests 库(用来发请求):在命令行输入
pip install requests。 - 写代码爬取并保存:
python
import requestsimport json# 简单的天气接口(示例接口,实际可用公开接口)url = "https://www.weather.com/api/data/2.5/weather?q=beijing&appid=123456"response = requests.get(url)weather_data = response.json() # 直接把返回的JSON转成Python字典# 提取需要的信息useful_data = {"城市": weather_data["name"],"温度": weather_data["main"]["temp"],"天气状况": weather_data["weather"][0]["description"],"更新时间": weather_data["dt"]}# 存成JSON文件with open("beijing_weather.json", "w", encoding="utf-8") as f:json.dump(useful_data, f, ensure_ascii=False, indent=2)- 运行后,打开 beijing_weather.json,就能看到整理好的天气数据了。
五、常见问题,新手踩坑指南
- 问:存 JSON 时中文显示成乱码?
答:记得在 dump () 里加 ensure_ascii=False,同时文件编码设为 utf-8,这样中文就正常了。 - 问:JSON 里的键是字符串,Python 字典取键时能用单引号吗?
答:可以的,Python 里字典键用单引号双引号都行,但 JSON 里的键必须是双引号,不过用 Python 转换时会自动处理,不用咱们操心。 - 问:遇到嵌套很多层的 JSON,怎么取深层数据?
答:一层一层来,比如 data ["a"]["b"]["c"],要是怕报错,可以用 get () 方法,比如 data.get ("a", {}).get ("b", {}),这样就算某个键不存在也不会报错。
| 操作场景 | 用什么函数 | 注意事项 |
|---|---|---|
| Python→JSON 文件 | json.dump() | 加 ensure_ascii=False |
| JSON 文件→Python | json.load() | 注意文件路径是否正确 |
| Python→JSON 字符串 | json.dumps() | 转成字符串用于接口传输 |
| JSON 字符串→Python | json.loads() | 处理接口返回的字符串 |
六、兔子哥的学习小建议
学 Python 结合 JSON,关键在多练。刚开始可以从简单的字典转 JSON 开始,熟悉后试试解析接口数据,遇到报错别慌,看看是不是格式错了,或者键名拼错了。记住,JSON 格式要求很严,少个逗号、多对引号都不行,耐心排查就行。
其实这俩搭配起来真的很简单,就像给数据找了个通用的 “快递盒”,Python 就是那个打包和拆包的工具。多写几个小案例,很快就能熟练啦,希望这篇教程能帮到你~
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~