Анализ ввода Unicode с использованием python json.loads

Каков наилучший способ загрузки JSON Strings в Python?

Я хочу использовать json.loads для обработки unicode следующим образом:

import json json.loads(unicode_string_to_load) 

Я также попытался поставить параметр «encoding» со значением «utf-16», но ошибка не исчезла.

Полный SSCCE с ошибкой:

 # -*- coding: utf-8 -*- import json value = '{"foo" : "bar"}' print(json.loads(value)['foo']) #This is correct, prints 'bar' some_unicode = unicode("degradé") #last character is latin e with acute "\xe3\xa9" value = '{"foo" : "' + some_unicode + '"}' print(json.loads(value)['foo']) #incorrect, throws error 

Ошибка:

 UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 6: ordinal not in range(128) 

4 Solutions collect form web for “Анализ ввода Unicode с использованием python json.loads”

Я приписываю строку в строку unicode, используя «latin-1», исправил ошибку:

 UnicodeDecodeError: 'utf16' codec can't decode byte 0x38 in position 6: truncated data 

Фиксированный код:

 import json ustr_to_load = unicode(str_to_load, 'latin-1') json.loads(ustr_to_load) 

И тогда ошибка не выбрасывается.

ОП разъясняет (в комментарии!) …:

Исходные данные – это огромная строка в кодировке unicode

Затем вы должны знать, какой из многих кодировок Юникода он использует – явно не «utf-16», поскольку это не удалось, но есть так много других – «utf-8», «iso-8859-15» и так далее. Вы либо пробуйте их все до тех пор, пока не print repr(str_to_load[:80]) , либо не print repr(str_to_load[:80]) и вставьте то, что он показывает, как редактирование вашего вопроса, поэтому мы можем догадаться от вашего имени! -).

Самый простой способ, который я нашел, – это

 import simplejson as json 

таким образом ваш код остается тем же

 json.loads(str_to_load) 

ссылка: https://simplejson.readthedocs.org/ru/latest/

С помощью django вы можете использовать SimpleJSON и использовать нагрузки вместо загрузки.

 from django.utils import simplejson simplejson.loads(str_to_load, "utf-8") 
  • Python - как конвертировать Unicode имя файла в CP437?
  • Ошибка преобразования Unicode с использованием Python в Emacs
  • Как проверить, находится ли строка в Python в ASCII?
  • Python удаляет лишние символы Unicode
  • Разница между unicode.isdigit () и unicode.isnumeric ()
  • Как создать временный файл с кодировкой Unicode?
  • python - как добавить литерал unicode к переменной?
  • Unicode-символ не находится в диапазоне при вызове locale.strxfrm
  • Python - лучший язык программирования в мире.