python中有没有一种方法可以替换字符串,但保留中间字符不变? 有没有办法替换文件中所有字符串的出现,而在字符串中间保留一个未知字符? 例如,将字符串“ab{unknown}cde”替换为“(ab{unknown}cde)”

python中有没有一种方法可以替换字符串,但保留中间字符不变? 有没有办法替换文件中所有字符串的出现,而在字符串中间保留一个未知字符? 例如,将字符串“ab{unknown}cde”替换为“(ab{unknown}cde)”,python,Python,与其说是替换,不如说是将匹配的子字符串括在括号中 >>> re.sub('(ab.cde)', r'(\1)', '123abxcde456') '123(abxcde)456' 模式是正则表达式ab.cde。模式中的括号表示整个匹配是一个捕获组。替换文本是一对括号,包含(第一个)组匹配的内容 您还可以指定接收正则表达式匹配结果的函数,而不是替换文本。这使您可以避免在正则表达式中显式定义捕获组 def surround(m): return f'({m.group()

与其说是替换,不如说是将匹配的子字符串括在括号中

>>> 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'

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

from re import sub

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

你应该研究正则表达式。你试过什么,做过什么研究吗?请参阅,.suggestion-您可以在“.”中添加*或+通配符,以说明未知字符的偶然运行。如果需要,可以使用任何正则表达式来匹配任何需要匹配的字符。