如何在Python中将货币字符串转换为浮点数?

64 投票
10 回答
95034 浏览
提问于 2025-04-17 07:55

我有一些字符串,它们表示带有特定货币格式的数字,比如:

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(这对于表示货币更好),而且它还避免了因为硬编码特定货币符号而产生的地区问题。

撰写回答