Mi código hace que obtenga algo de contenido de un sitio UserVoice. Como ya sabrá, UserVoice es una mierda de software que no puede manejar los datos correctamente; de hecho, para reducir la cantidad de texto en la página de búsqueda, cortan el texto en, digamos, 300 caracteres y luego agregan un "..." hasta el final. La cosa es, , no les importa cortar en medio de un carácter de varios bytes, lo que resulta en un "byte" utf-8 parcial: por ejemplo. para el è
char, obtuve \xc3
en lugar de \xc3\xa8s
.Python: maneja bytes unicode rotos al analizar cadena JSON
Por supuesto, cuando doy esta sopa horrible a json.loads
, falla con UnicodeDecodeError
. Entonces mi pregunta es simple: ¿cómo puedo pedirle al json.loads
que ignore estos bytes incorrectos, como lo haría usando .decode('utf-8', 'ignore')
si tuviera acceso a la parte interna de la función?
Gracias.
Ok, yo estaba escribiendo actualmente una respuesta diciendo que simplemente puede decodificar la cadena antes de pasarlo a 'json.loads'. Gracias, obviamente funciona! – zopieux