你的用法
replace
是错误的,因为您正在搜索字符串文本%d。这不是正则表达式。
您可以这样修复代码:
import re
words = ['Duration12:14254', 'Noun', 'Adjective7:888']
result = [re.sub(r'[0-9]+', r'[\g<0>]', w) for w in words]
repResult = [re.sub(r':\[(\d+)\]', r':\1', w) for w in result]
print(repResult)
你得到:
['Duration[12]:1', 'Noun', 'Adjective[7]:8']
与
['Duration12:14254', 'Noun', 'Adjective7:888']
,您将得到:
['Duration[12]:14254', 'Noun', 'Adjective[7]:888']
可以使用单个RegEx简化此代码:
import re
words = ['Duration12:14254', 'Noun', 'Adjective7:888']
result = [re.sub(r'(\d+):(\d+)', r'[\1]:\2', w) for w in words]