Python: обрабатывать битые байты Unicode при синтаксическом анализе строки JSON

Мой код заставляет получать некоторый контент с сайта UserVoice. Как вы, возможно, знаете, UserVoice - дерьмовая программа, которая не может правильно обрабатывать данные; действительно, чтобы уменьшить объем текста на странице поиска, они вырезали текст, скажем, до 300 символов, а затем добавляли "..." в конце. Дело в том, что они не заботятся об обрезке посередине многобайтового символа , что приводит к частичному «байту» utf-8: например. для символа и я получил \ xc3 вместо \ xc3 \ xa8s .

Конечно, когда я добавляю этот ужасный суп к json.loads , он терпит неудачу с UnicodeDecodeError . Итак, мой вопрос прост: как я могу попросить json.loads игнорировать эти плохие байты , как я бы сделал, используя .decode ('utf-8', 'ignore ') если бы у меня был доступ к внутренним компонентам функции?

Спасибо.

13
задан zopieux 2 November 2011 в 16:49
поделиться