[英]Extract specific currency amount from string in Python
我想提取具有以下形式的货币(清单)的价格:
1,10€
1美元
5美元
$ 1.10
1,99 $
欧元1.10
欧元10
欧元1.10
欧元10
1.10美元
我用正则表达式尝试了这个python函数re.findall(pattern,string)
(?:[\\£\\$\\€]{1}[,\\d]+.?\\d*)
https://regex101.com/r/X5SPDK/1
但我没有得到预期的结果
如果您不进行验证,则此表达式可能会更接近您的想法:
[£$€]\s*[.,\d]+|[.,\d]+\s*[£$€]|(?:Eur|dollars?)\s*[.,\d]+|[.,\d]+\s*(?:Eur|dollars?)
它将无法通过验证。 如果您想捕获数字,也可以添加捕获组。
import re
regex = r"[£$€]\s*[.,\d]+|[.,\d]+\s*[£$€]|(?:Eur|dollars?)\s*[.,\d]+|[.,\d]+\s*(?:Eur|dollars?)"
test_str ="""
I bought a car $12,250,000 it was expensive
that thing was £14,500,123.125521 dollas
afsaf£120.25sfsafsa
$ 1.10
€ 1,10
1,10 €
$ 1
€ 18
1€
5$
$1.10
€1,10
1,10€
1.99$
1,99$
Eur 1.10
Eur 1,99
Eur 10
Eur1.10
Eur1,99
Eur10
1.10 dollar
1,99 dollar
10 dollar
"""
print(re.findall(regex, test_str, re.I))
['$12,250,000', '£14,500,123.125521', '£120.25', '$ 1.10', '€ 1,10', '1,10 €', '$ 1', '€ 18', '1€', '5$', '$1.10', '€1,10', '1,10€', '1.99$', '1,99$', 'Eur 1.10', 'Eur 1,99', 'Eur 10', 'Eur1.10', 'Eur1,99', 'Eur10', '1.10 dollar', '1,99 dollar', '10 dollar']
如果您想浏览/简化/修改该表达式,请在regex101.com的右上方面板中进行说明 。 如果愿意,您还可以在此链接中观看,它将如何与某些示例输入匹配。
jex.im可视化正则表达式:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.