从JSON文件提取指定键值对并写入新JSON文件的技术问题
提取JSON中指定键值对并写入新文件
要实现从大型JSON文件中提取特定键值对并写入新文件,你可以按照以下步骤操作:
步骤说明
- 读取原始JSON:使用Python的
json模块加载原始文件内容。 - 筛选目标键值:遍历每个JSON对象,只保留你需要的键值对。
- 写入新文件:将筛选后的数据写入新的JSON文件,保证格式可读性。
完整代码示例
import json # 自定义需要保留的键列表,可根据需求添加/修改 required_keys = ["madde", "madde_id", "anlam_say"] # 读取原始JSON文件 with open("original.json", "r", encoding="utf-8") as input_file: original_data = json.load(input_file) # 提取指定键值对 filtered_data = [] for item in original_data: # 仅保留存在于required_keys中的键,避免KeyError filtered_item = {key: item[key] for key in required_keys if key in item} filtered_data.append(filtered_item) # 写入新JSON文件 with open("filtered_output.json", "w", encoding="utf-8") as output_file: # ensure_ascii=False保留非ASCII字符,indent=2格式化输出 json.dump(filtered_data, output_file, ensure_ascii=False, indent=2)
关键细节说明
- 自定义键列表:修改
required_keys数组,添加你需要提取的键名即可(比如只需要madde的话,改成required_keys = ["madde"])。 - 避免KeyError:字典推导式中加入
if key in item判断,防止原始JSON对象中缺失目标键导致报错。 - 字符编码与格式:
encoding="utf-8"确保非ASCII字符(如示例中的土耳其语)正确读写;ensure_ascii=False和indent=2让输出文件更易读。
处理超大型JSON文件
如果你的JSON文件体积极大(远超内存容量),可以使用ijson库进行流式处理,避免一次性加载整个文件:
import ijson import json required_keys = ["madde"] filtered_data = [] with open("large_original.json", "r", encoding="utf-8") as input_file: # 流式遍历每个JSON对象 for item in ijson.items(input_file, "item"): filtered_item = {key: item[key] for key in required_keys if key in item} filtered_data.append(filtered_item) with open("filtered_output.json", "w", encoding="utf-8") as output_file: json.dump(filtered_data, output_file, ensure_ascii=False, indent=2)
使用前需要先安装ijson:pip install ijson
内容的提问来源于stack exchange,提问作者Yusuf Ziya Gülçe
相关产品推荐
相关产品推荐

