I need to convert a string currency string in Continental Europe format into a float number:
Input:
'6.150.593,22 €'
Realize that decimal point is comma, and thousands separators are period characters.
Output:
6150593.22
I'd read these questions, but they only works for US dollar currency and locale:
currency_euros='6.150.593,22 €'
float(currency_euros[:-2])
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
float(currency_euros[:-2])
ValueError: could not convert string to float: '6.150.593,22'
Updated: Following the @IrmendeJong answer:
>>> 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:Python35liblocale.py", line 318, in atof
return func(delocalize(string))
ValueError: could not convert string to float: '6150593.22 €'
>>>
I'm ashtonished that locale.currency()
works fine but its reciprocal method locale.atof()
doesn't work.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…