我想清除价格范围为'GBP 10,000,000 – GBP 15,000,000'的字符串,去掉货币GBP,用Python中的Regex将破折号(-)替换为逗号(,),输出为(10000000,15000000)。我是这么试的:re.sub('[GBP,/s-]','', text)生成输出' 10000000 – 15000000'我还想去掉前导和尾随空格,同时用逗号(,)替换破折号(-)以生成元组(10000000,15000000)的输出
'GBP 10,000,000 – GBP 15,000,000'
GBP
(10000000,15000000)
re.sub('[GBP,/s-]','', text)
' 10000000 – 15000000'
p8h8hvxi1#
使用带有回调函数的re.sub,我们可以尝试:
re.sub
inp = "GBP 10,000,000 – GBP 15,000,000" output = re.sub(r'[A-Z]{3} (\d{1,3}(?:,\d{3})*) – [A-Z]{3} (\d{1,3}(?:,\d{3})*)', lambda m: '(' + m.group(1).replace(',', '') + ',' + m.group(2).replace(',', '') + ')', inp) print(output) # (10000000,15000000)
如果你想要一个实际的匹配列表/元组,那么我建议使用re.findall:
re.findall
inp = "GBP 10,000,000 – GBP 15,000,000" output = [x.replace(',', '') for x in re.findall(r'[A-Z]{3} (\d{1,3}(?:,\d{3})*)', inp)] print(output) # ['10000000', '15000000']
1条答案
按热度按时间p8h8hvxi1#
使用带有回调函数的
re.sub
,我们可以尝试:如果你想要一个实际的匹配列表/元组,那么我建议使用
re.findall
: