有没有什么方法可以替换文件中所有出现的字符串,同时保留字符串中间的未知字符完好无损?例如,将字符串 'ab{unknown}cde' 替换为 '(ab{unknown}cde)'
2 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
这与其说是替换,不如说是将匹配的子字符串括在括号中。
>>> 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'
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
您可以使用正则表达式来识别已知部分并用某些通配符替换未知部分。在你的例子中,
from re import sub
replaced = sub('(ab.cde)', r'(\1)', 'asdasdab5cdeasdasd')
添加回答
举报
0/150
提交
取消