Анализ ввода 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") 
  • UnicodeEncodeError: кодек «gbk» не может кодировать символ: незаконная многобайтовая последовательность
  • Запись строк unicode через sys.stdout в Python
  • Как заставить интерпретатор python правильно обрабатывать символы, отличные от ASCII, в строковых операциях?
  • Python, file (1) - Почему числа и диапазон (0x20, 0x100) используются для определения текстового или двоичного файла
  • urllib2 читается в Unicode
  • Как найти и подсчитать смайлики в строке с помощью python?
  • Показывать не ascii (японский) персонажей в легенде сюжета панд
  • Как указать диапазон символов Unicode в регулярном выражении в python?
  •  
    Interesting Posts for Van-Lav

    Аннотации переменной типа NameError несогласованность

    Возвращать результаты из нескольких моделей с помощью Django REST Framework

    Выполнение нескольких вызовов с помощью asyncio и добавление результата в словарь

    Заказ PYTHONPATH на Ubuntu 14.04

    AES – Шифрование с помощью Crypto (node-js) / дешифрование с помощью Pycrypto (python)

    Атака на маринование Python

    Как сохранить данные в таблице cassandra, используя искру saveToCassandra?

    Эффективный способ найти самый большой ключ в словаре с ненулевым значением

    Как добавить часы к текущему времени в python

    django – DetailView, как отображать две модели одновременно

    psycopg2 эквивалентен команде R dbWriteTable и получает больше производительности от кода python

    Созданное с помощью Pyinstaller приложение не связывается с указанным двоичным (chromedriver)

    Альтернативные зависимости (откат) в setup.py

    Каков правильный способ отправки большого количества данных через сокеты в Python?

    Ускорьте Pandas cummin / cummax

    Python - лучший язык программирования в мире.