首页 > 解决方案 > python中有没有办法替换字符串但保持中间字符完整?

问题描述

有没有办法替换文件中所有出现的字符串,同时在字符串中间保留未知字符?例如,将字符串 'ab{unknown}cde' 替换为 '(ab{unknown}cde)'

标签: python

解决方案


这与其说是替换,不如说是用括号括起来匹配的子字符串。

>>> re.sub('(ab.cde)', r'(\1)', '123abxcde456')
'123(abxcde)456'

模式是正则表达式ab.cde。模式中的括号表示整个匹配是一个捕获组。替换文本是一对括号,其中包含(第一个)组匹配的任何内容。

除了替换文本,您还可以指定一个接收正则表达式匹配结果的函数。如果没有别的,这可以让您避免在正则表达式中显式定义捕获组。

def surround(m):
    return f'({m.group()})'

new_str = re.sub('ab.cde', surround, '123abxcde456')
assert new_str == '123(abxcde)456'

推荐阅读