Convierta cadenas de Python en flotadores explícitamente usando la coma o el punto como separadores

¿Cómo puedo decirle explícitamente a python que lea un número decimal utilizando el punto o la coma como separador decimal? No conozco la configuración de localización de la PC que ejecutará mi script, y esto no debería influir en mi aplicación, solo quiero decir:

f = read_float_with_point("3.14") 

o

 f = read_float_with_comma("3,14") 

Creo que escribiendo

 def read_float_with_comma(num): return float(num.replace(",", ".") 

no es seguro, porque no conozco la configuración regional!

porque no conozco la configuración regional

Puedes buscarlo usando el módulo de locale :

 >>> locale.nl_langinfo(locale.RADIXCHAR) '.' 

o

 >>> locale.localeconv()['decimal_point'] '.' 

Usando eso, tu código podría convertirse en:

 import locale _locale_radix = locale.localeconv()['decimal_point'] def read_float_with_comma(num): if _locale_radix != '.': num = num.replace(_locale_radix, ".") return float(num) 

Mejor aún, el mismo módulo tiene una función de conversión para usted, llamada atof() :

 import locale def read_float_with_comma(num): return locale.atof(num) 

Puedes usar locale.atof

 import locale locale.atof('12.3') 

http://docs.python.org/2/library/locale.html

Puedes usar babel para analizar decimales en formatos locales:

 >>> parse_decimal('1,099.98', locale='en_US') Decimal('1099.98') >>> parse_decimal('1.099,98', locale='de') Decimal('1099.98')