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?
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ónunicodedata.normalize()
antes de aplicar la funcióncontractions.fix()
. Esto convertirá los caracteres no ASCII a su representación ASCII equivalente, lo que lo hará compatible con la bibliotecacontractions
.