如何在Python中将货币字符串转换为浮点数?
我有一些字符串,它们表示带有特定货币格式的数字,比如:
money="$6,150,593.22"
我想把这个字符串转换成数字
6150593.22
有什么好的方法可以做到这一点吗?
10 个回答
10
我发现 babel
这个包 对于处理一些问题非常有帮助。
这个工具让你在处理本地化数字时变得简单:
>>> babel.numbers.parse_decimal('1,024.64', locale='en')
Decimal('1024.64')
>>> babel.numbers.parse_decimal('1.024,64', locale='de')
Decimal('1024.64')
>>>
你可以使用 babel.numbers.get_currency_symbol('USD')
来去掉货币符号的前后缀,而不需要硬编码这些符号。
希望这对你有帮助,
dtk
18
如果你的地区设置正确,你可以使用 locale.atof
,不过你还是需要手动去掉前面的‘$’符号:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF8')
'en_US.UTF8'
>>> money = "$6,150,593.22"
>>> locale.atof(money.strip("$"))
6150593.2199999997
88
试试这个:
from re import sub
from decimal import Decimal
money = '$6,150,593.22'
value = Decimal(sub(r'[^\d.]', '', money))
这样做有一些好处,因为它使用了Decimal
,而不是float
(这对于表示货币更好),而且它还避免了因为硬编码特定货币符号而产生的地区问题。