Tengo un código de Python que recorre un archivo. Recibo un error UTF-8 (invalid continuation byte)
cuando leo el archivo. Solo quiero que mi programa ignore eso.
Intenté usar un try, excepto alrededor del código dentro, pero eso no funcionará ya que el error está en la condición del bucle for. También intenté usar un try, excepto alrededor del ciclo, pero luego, cuando detecta el error, no vuelve a iniciar el ciclo.
with open(input_file_path, "r") as input_file:
for line in input_file:
# code irrelevant to question
Lo que sucede es que da este error en for line in input_file
:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe0 in position 5: invalid continuation byte`
Quiero saltear esa línea y pasar a la siguiente. Esencialmente, un intento de detectar la condición de mi bucle for.
3 respuestas
¿Esto funciona? (editado a la solución OP encontrado)
with open(input_file_path, "r", encoding="utf8", errors="surrogateescape") as input_file:
for line in input_file:
try:
yourcode
except:
continue
¿Has probado algo como esto? Cuando se genera UnicodeDecodeError, el bucle continuará con la próxima iteración.
with open(input_file_path, "rb") as input_file:
for line in input_file:
try:
line_i = line.decode(encoding='utf-8')
except UnicodeDecodeError:
continue
Puede usar
with open(input_file_path, "r", encoding="ISO-8859-1") as input_file:
for line in input_file:
Preguntas relacionadas
Preguntas vinculadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.