我希望从一系列数据中提取价格。
我现在正在使用它:
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']
答案 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字边界的位置。