You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将文本文件内容替换为JSON嵌套字典的指定字段值

Python实现JSON嵌套字段替换方案

现有代码问题

  • 路径拼接逻辑错误:已定义的路径变量是文件所在目录,原有代码重复拼接路径会生成非法路径,无法正常读取文件
  • 读取的文本内容为字符串格式,未转换为可直接赋值的列表对象
  • 无需嵌套循环遍历字段,直接定位目标字段赋值即可
  • 缺少修改后JSON内容回写文件的步骤

完整可运行代码

import json
import os
import ast

def replace_cc_field(text_file_name, json_file_name):
    # 读取文本文件内容
    text_base_dir = "C:/Documents/"
    text_full_path = os.path.join(text_base_dir, text_file_name)
    with open(text_full_path, "r", encoding="utf-8") as f:
        raw_text = f.read().strip()
    
    # 将字符串格式的列表转换为Python列表,并将元素转为字符串匹配原JSON格式
    target_list = ast.literal_eval(raw_text)
    str_target_list = [str(item) for item in target_list]

    # 加载JSON文件为字典对象
    json_base_dir = "C:/Documents/"
    json_full_path = os.path.join(json_base_dir, json_file_name)
    with open(json_full_path, "r", encoding="utf-8") as f:
        json_data = json.load(f)
    
    # 直接替换目标字段
    json_data["aa"]["cc"] = str_target_list

    # 把修改后的内容写回JSON文件,indent参数保证格式美观
    with open(json_full_path, "w", encoding="utf-8") as f:
        json.dump(json_data, f, ensure_ascii=False, indent=4)

# 调用示例,按实际文件名修改参数即可
if __name__ == "__main__":
    replace_cc_field("file.txt", "file.json")

注意事项

  • 确保文本文件中存储的列表格式合法,ast.literal_eval可以安全转换符合Python字面量格式的字符串,相比eval没有执行恶意代码的风险
  • 如果JSON的层级结构有变动,修改json_data["aa"]["cc"]对应的层级即可

内容的提问来源于stack exchange,提问作者Hiwot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:36:03