2011-01-10 11 views

Respuesta

42

Si desea que el resultado como el número de punto flotante binario uso más cercana float:

result = [float(x.strip(' "')) for x in A1] 

Si desea que el resultado se guarda exactamente utilizar Decimal en lugar de float:

from decimal import Decimal 
result = [Decimal(x.strip(' "')) for x in A1] 
+0

Probaron esto y se dieron cuenta de que n No funciona porque las cadenas tienen espacios en blanco y comillas adicionales en ellas. – Jake

+0

Gracias, corregido. Por cierto, el tuyo también necesita corrección. –

+0

Probado, funciona como está. – Jake

2

Necesitará use strip() debido a los bits adicionales en las cadenas.

A2 = [float(x.strip('"')) for x in A1] 
+4

También necesita quitar el espacio extra. – DSM

+0

Probado como es y funciona. – Jake

+2

¿Probado con un método de cortar y pegar del OP? No funcionó como es. –

3

utilizan la función incorporada en float() en una lista de comprensión.

A2 = [float(v.replace('"','').strip()) for v in A1]

1

A2 = [float(x.strip('"')) for x in A1] obras, @Jake, pero hay 0s innecesarios

+2

No funciona con el ejemplo _exact_ de OP. Zeroes no son "innecesarios". 'float' no puede representar todos los decimales exactamente en binario. Pero mira la respuesta de Mark Byers. –

+0

gracias por el aviso – tekknolagi

0

Si está convirtiendo precio (en cadena) a precio decimal entonces ....

from decimal import Decimal 

price = "14000,45" 
price_in_decimal = Decimal(price.replace(',','')) 
0

Si están convirtiendo cadena en flotante:

import re 
A1 = [' "29.0" ',' "65.2" ',' "75.2" '] 
float_values = [float(re.search(r'\d+.\d+',number).group()) for number in A1] 
print(float_values) 
>>> [29.0, 65.2, 75.2] 
Cuestiones relacionadas