从Python

时间:2017-09-11 20:32:32

标签: python

我正在制作一个程序,从字符串中取货币并将其转换为其他货币。例如,如果字符串为'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。任何有关如何获得最初价格清单的帮助都会很棒。

3 个答案:

答案 0 :(得分:2)

此正则表达式可以更好地用于您的目的:

(?:[\£\$\€]{1}[,\d]+.?\d*)

尝试here

然后,当sainoba注意到,您可以使用re.findallre.finditer来获得匹配。

然后,您可以从第一个字符中提取货币,删除逗号,最后根据需要拆分小数点。

答案 1 :(得分:0)

您可以使用re.findallre.finditer

re.findall(pattern, string)返回匹配字符串列表。

re.finditer(pattern, string)返回一个迭代器。

答案 2 :(得分:0)

在处理货币时,您不能使用替换逗号和句点等简单方法。有许多语言和地区差异。欧元可以使用逗号或句点作为小数分隔符。某些区域设置在分组分隔符之间可能有两位或三位数。货币符号可以在左侧或右侧。符号可以表示十几种不同货币中的任何一种,具体取决于用户的区域设置。

利用图书馆为您处理这项工作。此问题已在其他帖子中详细讨论过,例如this one