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

Python:如何基于反转词列表批量替换字符串中的对应原词?

Python 批量替换字符串中指定内容

首先修正你原代码的问题:你每次循环都基于原始字符串a执行替换,导致之前的修改没有被保留,只有最后一次替换生效。要解决这个问题,最简单的方式是在更新后的字符串基础上继续操作:

a = "foo(bar)baz(blim)"
reversed_w = ['rab', 'milb']
pure_k = a  # 初始化待修改字符串为原始值
for w in reversed_w:
    original_word = w[::-1]
    pure_k = pure_k.replace(original_word, w)

print(pure_k)  # 输出: foo(rab)baz(milb)

但如果面对大量替换词(比如50个)和长字符串(1000字符),多次调用replace会反复遍历字符串,效率较低。更高效的方案是构建替换映射+正则匹配一次性处理:

import re

a = "foo(bar)baz(blim)"
reversed_w = ['rab', 'milb']
# 生成原词到反转词的映射字典
replace_dict = {word[::-1]: word for word in reversed_w}

# 匹配括号内的单词
pattern = re.compile(r'\((\w+)\)')

# 使用正则替换,通过lambda函数自动查找对应替换值
result = pattern.sub(lambda match: f'({replace_dict.get(match.group(1), match.group(1))})', a)

print(result)  # 输出: foo(rab)baz(milb)

这个方案的优势在于:正则表达式仅需遍历字符串一次,所有替换操作在单次扫描中完成,不管替换词数量多少,都不会增加字符串遍历次数,大幅提升处理效率。如果括号内的内容不是纯单词,还可以调整正则表达式(比如用[^)]+匹配括号内任意非右括号字符)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:15:17