Tri*_*max 1 python floating-point locale euro currency-formatting
我需要将欧洲大陆格式的字符串货币字符串转换为浮点数:
输入:
'6.150.593,22 €'
Run Code Online (Sandbox Code Playgroud)
意识到小数点是逗号,千位分隔符是句点字符。
输出:
6150593.22
Run Code Online (Sandbox Code Playgroud)
我会阅读这些问题,但它们仅适用于美元货币和语言环境:
currency_euros='6.150.593,22 €'
float(currency_euros[:-2])
Run Code Online (Sandbox Code Playgroud)
'6.150.593,22 €'
Run Code Online (Sandbox Code Playgroud)
更新:按照@IrmendeJong 的回答:
>>> import locale
>>> locale.setlocale(locale.LC_NUMERIC, "es")
'es'
>>> print(locale.currency(6150593.22))
6150593,22 €
>>> money = '6.150.593,22 €'
>>> locale.atof(money)
Traceback (most recent call last):
File "<pyshell#68>", line 1, in <module>
locale.atof(money)
File "C:\Python35\lib\locale.py", line 318, in atof
return func(delocalize(string))
ValueError: could not convert string to float: '6150593.22 €'
>>>
Run Code Online (Sandbox Code Playgroud)
我很高兴这locale.currency()工作正常,但它的互惠方法locale.atof()不起作用。
使用locale.atof https://docs.python.org/3/library/locale.html#locale.atof
>>> import locale
>>> locale.setlocale(locale.LC_NUMERIC,"nl")
'nl'
>>> locale.atof("6.150.593,22")
6150593.22
Run Code Online (Sandbox Code Playgroud)