import re
words = ['Duration12:1', 'Noun', 'Adjective7:8']
result = ([re.sub(r'[0-9]+', r'[\g<0>]', w) for w in words])
[ '持续时间[12]:[1]', '名词', '形容词[7]:[8]']
但现在后
repResult = [x.replace(':[%d]', ':%d') for x in result]
我再次得到
[ '持续时间[12]:[1]', '名词', '形容词[7]:[8]']
虽然我希望替换的字符应该是
[ '持续时间[12]:1', '名词', '形容词[7]:8']
这是语法用正确的方法在这里还是我缺少什么呢?
因为您正在搜索字符串“%d”你replace
的用法是错误的。这不是一个正则表达式。
您可以修复你这样的代码:
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']
此代码可以使用单个正则表达式被简化:
import re
words = ['Duration12:14254', 'Noun', 'Adjective7:888']
result = [re.sub(r'(\d+):(\d+)', r'[\1]:\2', w) for w in words]