我如何正确使用“替换”方法Python中字符集

问题描述 投票:1回答:1
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']

这是语法用正确的方法在这里还是我缺少什么呢?

python replace
1个回答
0
投票

因为您正在搜索字符串“%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]
© www.soinside.com 2019 - 2024. All rights reserved.