我正在制作一个程序,从字符串中取货币并将其转换为其他货币。例如,如果字符串为'the car cost me $13,250'
,我需要获得$
和13250
。我有这个正则表达式已经(?:\£|\$|\€)(?:.{1,})
那样做了,但是字符串可能有多个价格的可能性相当大,全部使用不同的货币。这是我不知道如何有效地做的事情。
我需要知道的是如何从字符串中提取所有价格。我认为即使正则表达式返回类似['$12,250,000','£14,500,123','£120.25']
之类的东西,也没关系,因为我可以使用这样的东西来获得数字:
prices = ['$12,250','£14,500','£120']
for value in prices:
value.replace(',','')
这样的东西可以获得货币:
for c in prices:
currency = c[0]
然后存在价格可能不是整数的问题,可能类似于$12.54
。任何有关如何获得最初价格清单的帮助都会很棒。
答案 0 :(得分:2)
此正则表达式可以更好地用于您的目的:
(?:[\£\$\€]{1}[,\d]+.?\d*)
尝试here。
然后,当sainoba注意到,您可以使用re.findall
或re.finditer
来获得匹配。
然后,您可以从第一个字符中提取货币,删除逗号,最后根据需要拆分小数点。
答案 1 :(得分:0)
您可以使用re.findall
或re.finditer
:
re.findall(pattern, string)
返回匹配字符串列表。
re.finditer(pattern, string)
返回一个迭代器。
答案 2 :(得分:0)
在处理货币时,您不能使用替换逗号和句点等简单方法。有许多语言和地区差异。欧元可以使用逗号或句点作为小数分隔符。某些区域设置在分组分隔符之间可能有两位或三位数。货币符号可以在左侧或右侧。符号可以表示十几种不同货币中的任何一种,具体取决于用户的区域设置。
利用图书馆为您处理这项工作。此问题已在其他帖子中详细讨论过,例如this one。