2011-07-09 16 views

Respuesta

64

Basta con retirar la , con replace():

float("123,456.908".replace(',','')) 
+2

esto depende de la configuración regional. 9 988 776,65 € en Francia 9.988.776,65 € en Alemania $ 9,988,776.65 en los Estados Unidos –

1
s = "123,456.908" 
print float(s.replace(',', '')) 
5

¿Y esto?

my_string = "123,456.908" 
commas_removed = my_string.replace(',', '') # remove comma separation 
my_float = float(commas_removed) # turn from string to float. 

En resumen:

my_float = float(my_string.replace(',', '')) 
1

Aquí está una manera sencilla que escribí para ti. :)

>>> number = '123,456,789.908'.replace(',', '') # '123456789.908' 
>>> float(number) 
123456789.908 
+0

're' es un gran martillo para tal tarea. –

+0

@Roman: Sí, me di cuenta y lo solucioné. :) –

+0

@John Doe: Se ve mucho mejor ahora. Me gusta 'flotar (número)' por su toque descriptivo. +1 ;-) – Aufwind

96

... O en lugar de tratar las comas como la basura que va a filtrarse hacia fuera, podríamos tratar a la cadena global como un formato localizada del flotador, y el uso de los servicios de localización:

from locale import * 
setlocale(LC_NUMERIC, '') # set to your default locale; for me this is 
# 'English_Canada.1252'. Or you could explicitly specify a locale in which floats 
# are formatted the way that you describe, if that's not how your locale works :) 
atof('123,456') # 123456.0 
# To demonstrate, let's explicitly try a locale in which the comma is a 
# decimal point: 
setlocale(LC_NUMERIC, 'French_Canada.1252') 
atof('123,456') # 123.456 
+1

La manera más pitónica e intuitiva hasta ahora. +1 – Aufwind

+0

Volvería a votar esta respuesta si los ejemplos incluyen un punto decimal y caracteres de agrupación de dígitos en ellos ... – martineau

+6

Bien para un script, malo para una biblioteca: 'Los módulos de extensión nunca deben llamar a setlocale()' – dangonfast

Cuestiones relacionadas