有沒有什么方法可以替換文件中所有出現的字符串,同時保留字符串中間的未知字符完好無損?例如,將字符串 '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
提交
取消