How to convert Euro currency string to float number?

怎甘沉沦 提交于 2019-12-12 05:37:28

问题


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:

  • How do I convert a currency string to a floating point number in Python?
  • python: how to convert currency to decimal?
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:\Python35\lib\locale.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.


回答1:


Use 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



回答2:


A good way of doing it (1 line) :

NewValue = float(value[:-2].replace(".", "").replace(",","."))



回答3:


A simple solution may be as follows:

>>> val = '6.150.593,22 €'
>>> res = val[:-2].split(',')
>>> float('.'.join([res[0].replace('.', ''), res[1]]))
6150593.22



回答4:


value = '6.150.593,22 €'
value = value.split()[0]              #Take out euro symbol
integer, decimal = value.split(',')   #Separate integer and decimals
integer = integer.replace('.','')     #Take out dots
final_value = int(integer) + (int(decimal) * (10**(-len(decimal))))


来源:https://stackoverflow.com/questions/40717037/how-to-convert-euro-currency-string-to-float-number

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!