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

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

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

Благодарю.

2 Solutions collect form web for “Python: обрабатывать сломанные байты unicode при разборе строки JSON”

Вы не просите простых людей игнорировать их. Когда у меня возникла подобная проблема, как у вас, я просто запустил .decode('utf-8', 'ignore').encode('utf-8') и продолжайте.

Просто передайте строку Unicode в json.loads() :

 >>> badstr = "qualité"[:-1]+".." >>> badstr 'qualit\xc3..' >>> json_str = '["%s"]' % badstr >>> import json >>> json.loads(json_str) Traceback (most recent call last): ... UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 6: invalid \ continuation byte >>> json.loads(json_str.decode('utf-8','ignore')) [u'qualit..'] 
  • python-re: Как я могу сопоставить альфа-символ
  • Юникод Python в терминале Mac os X
  • Персонаж \ u260e
  • Настройте Notepad ++ и NppExec для печати символов юникода из python
  • Должен ли я использовать строку Unicode по умолчанию?
  • Python не открывает японские имена файлов
  • Отслеживание неявных преобразований Unicode в Python 2
  • Удаление символов не-ascii из любого заданного типа string в Python
  • Python urllib.request и вопрос об декодировании utf8
  • Почему я не могу ввести японские символы в приглашении в Python3?
  • Python: конвертировать Unicode в ASCII без ошибок
  • Python - лучший язык программирования в мире.