es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La contracción fix generó un error “IndexError: índice de cadena fuera de rango”.

Estaba aplicando contractions.fix a un texto pero resultó en un error ‘IndexError: string index out of range’ después de aplicar el bloque try catch al texto, logré descubrir que está arrojando un error en dos palabras específicas.

%%time
import re
import contractions
import unicodedata

text = nuestro_texto

expanded_words = []
for palabra in text.split():
    try:
        expanded_words.append(contractions.fix(palabra))
    except:
        print(palabra, len(palabra))

Salida:

İtburnu 7

İletişim 8

contractions.fix('İtburnu')

salida: “IndexError: índice de cadena fuera de rango”

¿Por qué estas dos palabras específicas están causando el error?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Las dos palabras específicas “İtburnu” e “İletişim” están causando el error porque contienen caracteres Unicode no ASCII, específicamente las letras “İ” que tienen una codificación diferente a los caracteres ASCII. La biblioteca contractions parece estar diseñada para funcionar solo con caracteres ASCII, por lo tanto, arroja un error cuando encuentra estas letras. Para solucionar este error, podemos intentar normalizar el texto usando la función unicodedata.normalize() antes de aplicar la función contractions.fix(). Esto convertirá los caracteres no ASCII a su representación ASCII equivalente, lo que lo hará compatible con la biblioteca contractions.

Comments are closed.