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

如何在Python中替换未知结构JSON文件中的指定字符串值?

解决JSON任意结构下替换指定字符串值的问题

没问题,这个需求其实可以通过递归遍历+类型判断来解决,完全不用提前摸清JSON的结构~核心思路就是不管遇到字典还是列表,都一层层钻进去检查每个值,碰到是"REPLACE_ME"的就替换成你要的自定义字符串。

具体实现方案

我们可以写一个递归函数,自动处理所有嵌套的JSON结构(字典、列表,甚至多层嵌套的组合):

import json

def replace_placeholder(data, replacement_str):
    if isinstance(data, dict):
        # 遍历字典的每个键值对,递归处理对应的值
        return {key: replace_placeholder(value, replacement_str) for key, value in data.items()}
    elif isinstance(data, list):
        # 遍历列表的每个元素,递归处理每个元素
        return [replace_placeholder(item, replacement_str) for item in data]
    elif isinstance(data, str) and data == "REPLACE_ME":
        # 匹配到目标占位符,替换为自定义字符串
        return replacement_str
    else:
        # 其他类型(数字、布尔值、None等)直接返回原内容
        return data

# 实际使用示例
if __name__ == "__main__":
    # 读取目标JSON文件
    with open("your_input.json", "r", encoding="utf-8") as f:
        original_data = json.load(f)
    
    # 替换所有"REPLACE_ME"为你的自定义字符串,比如"hello_world"
    updated_data = replace_placeholder(original_data, "hello_world")
    
    # 将修改后的数据写入新文件(也可以覆盖原文件)
    with open("your_output.json", "w", encoding="utf-8") as f:
        json.dump(updated_data, f, indent=4, ensure_ascii=False)

代码说明

  • 递归遍历:函数会自动深入到JSON的每一层,不管是字典里的嵌套字典,还是列表里的嵌套列表,都能遍历到所有值。
  • 类型判断:针对不同的JSON类型(字典、列表、字符串、基础类型)做不同处理,确保只替换符合条件的字符串值。
  • 保留原格式:写回文件时用indent=4保持JSON的格式化可读性,ensure_ascii=False支持中文等非ASCII字符。

额外提示

  • 如果需要替换其他占位符,只需要修改data == "REPLACE_ME"这一行的字符串即可。
  • 如果不想创建新文件,直接覆盖原文件的话,只需要把写入的文件名改成和读取的一致即可(注意备份原文件,避免意外)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:48:49