乐于分享
好东西不私藏

AI应用工程师-w0d1

AI应用工程师-w0d1

Python JSON 处理脚本

目标

不依赖AI辅助,独立写一个读取JSON文件、按条件过滤数据、格式化打印结果的Python脚本,建立基本的编程手感。

任务

具体内容
产出
实践
用open()读取JSON文件、json.load()解析、列表推导式过滤、f-string格式化输出
可运行的过滤脚本
独立编写,遇到报错再问AI

探索记录

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'>
JSON 类型
Python 类型
例子
字符串
str"小美"
数字
int
float
92
布尔值
booltrue
false
null
NoneTypenull
数组
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(路径错误)