Hola, necesito ayuda para escribir una función para convertir la representación de cadena del precio en valores flotantes reales = ['1.999,00', '299,00', '299,86', '1.549,99'] idealmente, la salida sería la salida = [1999,00, ...

0
goku 15 ene. 2021 a las 00:29

3 respuestas

La mejor respuesta

Otro método alternativo es;

values = ['1.999,00','299,00','299,86', '1.549,99']
values = [float(value.translate(str.maketrans({'.': '', ',': '.'}))) for value in values]

Esta es la salida:

print(values)
[1999.0, 299.0, 299.86, 1549.99]

Maketrans es una forma elegante de intercambiar valores de dos variables entre sí simultáneamente, por ejemplo, A, B = B, A

1
nectarBee 14 ene. 2021 a las 21:59

Hayo, primero reemplace el punto con nada, luego reemplace , con ..

values = ["1.999,00", "299,00", "299,86", "1.549,99"]

output = [float(x.replace(".", "").replace(",", ".")) for x in values]

print(output)
1
Leemosh 14 ene. 2021 a las 21:33

Por el aspecto de las cosas, parece que está tratando con el formato euro. Para simplificar, volveremos al inglés. con eso, intercambie puntos con nada y comas con puntos. Tenga una nueva lista para enviar flotantes después de la conversión.

    values = ['1.999,00','299,00','299,86', '1.549,99']
    floatValues = []
    
    for v in values:
        tmp = v.replace(".", "").replace(",", ".")
        floatValues.append(float(tmp))
    
    
    print ("values: ", values);
    print ("floatValues: ", floatValues);

Salida

values:  ['1.999,00', '299,00', '299,86', '1.549,99']

floatValues:  [1999.0, 299.0, 299.86, 1549.99]
0
Daniel Dut 14 ene. 2021 a las 21:56
65727177