我有一些表示特定货币格式的数字的字符串,例如:
money="$6,150,593.22"
我想把这个字符串转换成数字
6150593.22
实现这一目标的最佳方法是什么?
发布于 2011-12-08 04:28:22
试试这个:
from re import sub
from decimal import Decimal
money = '$6,150,593.22'
value = Decimal(sub(r'[^\d.]', '', money))
这有一些好处,因为它使用Decimal
而不是float
(更适合表示货币),而且它还避免了任何区域设置问题,因为它不会硬编码特定的货币符号。
发布于 2011-12-08 04:24:10
如果您的语言环境设置正确,您可以使用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
发布于 2017-09-26 01:47:10
对于不对货币位置或符号进行硬编码的解决方案:
raw_price = "17,30 €"
import locale
locale.setlocale(locale.LC_ALL, 'fr_FR.UTF8')
conv = locale.localeconv()
raw_numbers = raw_price.strip(conv['currency_symbol'])
amount = locale.atof(raw_numbers)
https://stackoverflow.com/questions/8421922
复制相似问题