如何用Python循环修改JSON外层键名,批量生成多份对应文件
JSON外层键批量修改实现方案
原有代码错误原因
dict.items()返回的是只读的键值对元组,直接修改元组的第一个元素不会改变原字典的键- 每次循环都读写同一个
test.json,无法生成5份独立文件 - 存在2处语法错误:
OrderedDict拼写错误、for循环行末尾缺少冒号 - 未删除原外层键
fruits,即使修改成功也会出现新旧键共存的问题
额外注意:你的原始JSON里
"fruit": "apple",后面多了一个尾随逗号,部分版本的Python json模块解析会报错,建议先删掉这个多余逗号。
修正后实现代码
import json from collections import OrderedDict # 仅读取一次原始文件,减少重复IO origin_file = "test.json" with open(origin_file, "r", encoding="utf-8") as f: origin_data = json.load(f, object_pairs_hook=OrderedDict) # 提取固定不变的内层字典内容 inner_content = origin_data["fruits"] for i in range(1, 6): # 构造新的外层键 new_key = f"fruits{i}" # 生成新的字典结构 new_data = OrderedDict([(new_key, inner_content)]) # 按序号生成不同的输出文件名,避免覆盖 output_file = f"test_{i}.json" with open(output_file, "w", encoding="utf-8") as f: # indent=2保持和原始JSON一致的缩进格式 json.dump(new_data, f, indent=2, ensure_ascii=False)
运行后会在当前目录生成test_1.json到test_5.json共5个文件,每个文件的外层键对应fruits1到fruits5,内层内容和原始JSON完全一致。如果你需要自定义输出文件名规则,直接修改output_file的赋值逻辑即可。
内容的提问来源于stack exchange,提问作者exd199
相关产品推荐
相关产品推荐

