如何在Python中使用Regex清除由破折号(-)连接的价格范围字符串?

eivgtgni  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(81)

我想清除价格范围为'GBP 10,000,000 – GBP 15,000,000'的字符串,去掉货币GBP,用Python中的Regex将破折号(-)替换为逗号(,),输出为(10000000,15000000)
我是这么试的:re.sub('[GBP,/s-]','', text)生成输出' 10000000 – 15000000'我还想去掉前导和尾随空格,同时用逗号(,)替换破折号(-)以生成元组(10000000,15000000)的输出

p8h8hvxi

p8h8hvxi1#

使用带有回调函数的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

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']

相关问题