Python JSON 处理脚本
目标
不依赖AI辅助,独立写一个读取JSON文件、按条件过滤数据、格式化打印结果的Python脚本,建立基本的编程手感。
任务
探索记录
json.load()vs json.loads()
# load:直接从文件对象读取data = json.load(f)# loads:先读成字符串,再从字符串解析content = f.read() # content 是字符串data = json.loads(content) # 从字符串解析json.load()内部相当于 f.read()+ json.loads()两步合一。
JSON 数据类型与 Python 类型的对应
print(type(data)) # → <class 'list'>print(type(data[0])) # → <class 'dict'> print(type(data[0]["name"])) # → <class 'str'>print(type(data[0]["score"])) # → <class 'int'>str | "小美" | |
intfloat | 92 | |
bool | truefalse | |
NoneType | null | |
list | [1, 2, 3] | |
dict | {"k": "v"} |
实践记录
import jsonDATA_FILE = "data.json"with open(DATA_FILE, "r", encoding="utf-8") as f: data = json.load(f) data_select = [i for i in data if i["score"] >= 80]for i in data_select: print(f"{i['name']:<6}{i['score']:<6}{i['city']:<6}{i['hobby']:<6}")使用数据:
[ {"name": "小美", "score": 92, "city": "北京", "hobby": "画画"}, {"name": "阿杰", "score": 78, "city": "上海", "hobby": "篮球"}, {"name": "大刘", "score": 55, "city": "广州", "hobby": "吉他"}, {"name": "小婷", "score": 88, "city": "北京", "hobby": "摄影"}, {"name": "阿强", "score": 63, "city": "深圳", "hobby": "游泳"}, {"name": "小玲", "score": 95, "city": "上海", "hobby": "画画"}, {"name": "大伟", "score": 71, "city": "北京", "hobby": "篮球"}, {"name": "小华", "score": 45, "city": "广州", "hobby": "游戏"}]关键理解
open()的with语句:确保文件自动关闭,避免资源泄漏 json.load() vs json.loads():load从文件读,loads从字符串读 列表推导式的结构:[expression for item in iterable if condition] f-string格式化: f"{变量名:.2f}"— 控制小数位(2位)f"{变量名:<10}"— 左对齐(冒号在左=靠左)f"{变量名:>10}"— 右对齐(冒号在右=靠右)f"{变量名:^10}"— 居中对齐(冒号在两边=居中)f"{变量名:>10.2f}"— 组合:宽度10 + 右对齐 + 2位小数报错训练:TypeError(类型不匹配)、KeyError(键不存在)、FileNotFoundError(路径错误)
夜雨聆风