UnicodeEncodeError: ‘decimal’ codec no se puede codificar caracteres u’\x00′ en la posición 8: invalid decimal cadena Unicode

Esta línea me está dando un UnicodeEncodeError

studentID = int(studentID.unicode_markup.encode('utf-8').decode('utf-8', 'ignore'))

Específicamente el error es este UnicodeEncodeError: 'decimal' codec can't encode character u'\x00' in position 8: invalid decimal Unicode string

Si puedo cambiar la línea a este:

studentID = int(studentID.unicode_markup.encode('utf-8'))

Me sale este error:

ValueError: invalid literal for int() with base 10: '\xc2\xa0\xc2\xa0100\xc2\xa0\xc2\xa0'

He intentado especificar una codificación diferente (como ‘ascii’), pero aún me da el mismo error.

La ayuda es muy apreciada.

  • ¿Por qué está usted de codificación y decodificación de la cadena cuando ya es unicode? Todo lo que necesitas hacer es pasar en la cadena directa: es decir,int(studentID.unicode_markup). La cadena tiene espacios de no separación en el principio y el final, pero int() automáticamente tira de aquellos.
  • int(id de alumno.unicode_markup) me da el error de: UnicodeEncodeError: ‘decimal’ codec no se puede codificar caracteres u’\x00′ en la posición 8: invalid decimal cadena Unicode
  • El documento html debe contener caracteres nulos. Donde están recibiendo este documento? Estás descargando? Y si es así, ¿cómo puede convertir a unicode?
InformationsquelleAutor Vishwa Iyer | 2015-05-10

1 Kommentar

  1. 2

    Usted tiene algunos de los caracteres visibles en su cadena de antes y después de la 100. Por lo tanto, laint función está fallando porque no se puede convertir esto en una cadena de int.

    Pruebe el siguiente método para analizar cualquiera de los números antes de intentar convertir a int:

    import re
    
    # find all characters in the string that are numeric.
    m = re.search(r'\d+', studentID.unicode_markup)
    numeric = m.group() # retrieve numeric string
    int(numeric) # returns 100
    • Si me sale un mensaje de error similar, este método de trabajo?
    • Ahora me aparece este error: UnicodeDecodeError: ‘ascii’ codec no puede decodificar byte 0xc2 en la posición 0: ordinal no en el rango de(128)
    • modificar a trabajar para todos los casos en que la cadena contiene un número, y quiere extraer ese número a convertir a int.
    • Probablemente este es el método más fiable. No es necesario codificar la cadena de caracteres a UTF-8, aunque, sólo el uso m = re.search(r'\d+', studentID.unicode_markup)
    • Esto funcionó gracias!
    • no hay problema. Sólo por curiosidad, ¿hubo alguna razón para codificar la cadena original como utf-8? Usted debe ser capaz de ejecutar re.search en el original unicode_markup con el mismo resultado.
    • Honestamente, no sé. Soy nuevo en la codificación y decodificación, y realmente es muy confuso para mí. El código funcionó después de mí pasar horas tratando de resolver mi problema. Yo realmente no quiere correr el riesgo de que el código no funcione de nuevo.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea