Traceback (última llamada más reciente): archivo "scrap.py", línea 13, en convert_price = float (price [: 5]) ValueError: no se pudo convertir la cadena en float: '₹ \ xa022,'

1
Nikita Sharma 9 ago. 2020 a las 16:13

3 respuestas

La mejor respuesta

Tendrá que filtrar todos los caracteres que no forman parte de un número de punto flotante ya que float solo permite ciertos caracteres.

Puede utilizar una expresión regular (regex) para encontrar todos los caracteres que están permitidos en un número de punto flotante. Por ejemplo, para encontrar todos los dígitos, menos, más y puntos:

float_regex = re.compile(r'[-.+\d]+')

Busque todos estos caracteres en la cadena de entrada y únalos:

clean_input = ''.join(float_regex.findall(input_string))

Y solo entonces conviértalo en un flotador.

Por ejemplo:

>>> import re
>>> float_regex = re.compile(r'[-.+\d]+')
>>> input_string = '₹\xa022,'
>>> clean_input = ''.join(float_regex.findall(input_string))
>>> float(clean_input)
22.0
1
D Malan 10 ago. 2020 a las 12:10

Usted podría usar

dirty = "₹22000.83"

try:
    cleaned = float("".join(char for char in dirty if
                            char in ["-", "."] or char.isdigit()))
    print(cleaned)
except ValueError:
    pass

Lo que produce

22000.83
3
Jan 9 ago. 2020 a las 13:27

Tratar:

>>> converted_price = float(price[1:])
>>> converted_price
22000.0
1
Gabip 9 ago. 2020 a las 13:16