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

Python如何用re模块替换双引号外字符串 忽略引号内内容

Python re 实现引号外True替换方案

核心逻辑

利用正则「优先匹配引号包裹内容、跳过替换」的思路,只处理双引号外侧的独立True值,不修改引号字符串内部出现的True文本。

实现代码

import re

# 原始待处理字符串
raw_json = '{"name":"John", "isAdult":True, "Address":"42 True Street SomeLand"}'

# 执行替换
processed = re.sub(
    pattern=r'(".*?")|\bTrue\b',
    repl=lambda m: m.group(1) if m.group(1) else '"True"',
    string=raw_json
)

print(processed)

正则规则说明

正则表达式(".*?")|\bTrue\b包含两个按优先级从左到右匹配的分支:

  • 第一分支(".*?"):通过非贪婪模式优先捕获所有双引号包裹的字符串片段,这部分内容会原样保留,不触发替换
  • 第二分支\bTrue\b:通过单词边界符匹配独立存在的裸True,避免误匹配其他包含True字符的长词汇

替换逻辑通过匿名函数实现:

  • 如果当前匹配结果捕获到了第一分支的引号内容,直接返回原文本不修改
  • 如果当前匹配到的是第二分支的裸True,返回替换后的"True"

运行结果

执行代码后输出完全符合预期:

{"name":"John", "isAdult":"True", "Address":"42 True Street SomeLand"}

注:该方案适用于双引号正确配对、无未转义内嵌双引号的场景,和题目给出的测试场景完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:33:24