为了账号安全,请及时绑定邮箱和手机立即绑定

python中有没有办法替换字符串但保留中间字符完整?

python中有没有办法替换字符串但保留中间字符完整?

交互式爱情 2024-01-15 15:31:39
有没有什么方法可以替换文件中所有出现的字符串,同时保留字符串中间的未知字符完好无损?例如,将字符串 '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'


查看完整回答
反对 回复 2024-01-15
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

您可以使用正则表达式来识别已知部分并用某些通配符替换未知部分。在你的例子中,


from re import sub


replaced = sub('(ab.cde)', r'(\1)', 'asdasdab5cdeasdasd')


查看完整回答
反对 回复 2024-01-15
  • 2 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信