使用价格通用解决方案从字符串中删除货币符号和文字

时间:2014-11-25 13:38:47

标签: python regex string converter currency

我有这样的例子:

  

10.99美元

     

LIR10.99

     

$ 10.99

     

$ 10.99

因此输入数据可以是任何符号浮动'或者'符号浮动'。

我做了这样的事情:

float((str(param[2]).translate(None, '$USDLIR')))

但它可以是任何世界货币,因此它必须是通用转换器。

3 个答案:

答案 0 :(得分:5)

您可以删除除数字以外的所有内容(包括逗号或小数点):

import re
trim = re.compile(r'[^\d.,]+')
mystring = 'USD 10.99'
result = trim.sub('', mystring)
print(result)
# '10.99'

答案 1 :(得分:4)

从字符串中删除任何不是数字或小数点的内容:

import re
import locale
decimal_point_char = locale.localeconv()['decimal_point']
clean = re.sub(r'[^0-9'+decimal_point_char+r']+', '', str(param[2]))
value = float(clean)

这也将处理分组($ 1,000.00)和不同的区域设置。

答案 2 :(得分:1)

我刚刚找到了解决方案:

def price_convert(_price):
    return float(sub(r'[^0-9.]', '', _price))