用正则表达式提取价格

时间:2017-09-15 11:05:41

标签: regex python-3.x

我希望从一系列数据中提取价格。

我现在正在使用它:

re.findall(r'£(?:\d+\.)?\d+.\d+', '£1.01')
['1.01']

99%的时间都可以正常工作。但是,我偶尔会看到这个:

re.findall(r'£(?:\d+\.)?\d+.\d+', '£1,444.01')
['1,444']

我希望理想地看到['1444.01']

这是我从中提取价格的字符串示例。

'\n                £1,000.73                \n\n\n                + £1.26\nUK delivery\n\n\n'

我帮助整理正则表达式从上面的字符串中获取['1000.73', '1.26']

1 个答案:

答案 0 :(得分:4)

您可以使用'£(\d[\d.,]*)\b'获取所有值,然后使用

删除所有逗号
import re
s = '\n                £1,000.73                \n\n\n                + £1.26\nUK delivery\n\n\n'
r = re.compile(r'£(\d[\d.,]*)\b')
print([x.replace(',', '') for x in re.findall(r, s)])
# => ['1000.73', '1.26']

请参阅Python demo

£(\d[\d.,]*)\b模式找到£,然后尽可能多地捕获一个数字,然后捕获任何0+数字/ , / .,但会回溯到a字边界的位置。