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
相关产品推荐
相关产品推荐

