Python json проблема парсера с пробелами - PullRequest
0 голосов
/ 04 мая 2020

Я работаю с некоторыми JSON данными, которые я получаю из API. Но когда я пытаюсь разобрать его с помощью синтаксического анализатора python json, результирующие значения в кавычках с пробелами анализируются неправильно.

Например:

Из файла response.text из API я получаю следующую часть: «значение»: «4 685», после анализа он превращается в «значение»: «4 \ xa0685 '

Я понимаю, что мог бы вручную убрать \ xa0 и получить результат, но это кажется странным решением.

код:

response = requests.get(url)
data = json.loads(response.text)

Кто-нибудь знает, что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

По-моему, это проблема с кодировкой.

Из документации модуля запросов

Когда вы делаете запрос, Requests делает обоснованные предположения о кодировке ответа на основе заголовков HTTP. Кодировка текста, угаданная Requests, используется при доступе к r.text. Вы можете узнать, что использует Requests для кодирования, и изменить его, используя свойство r.encoding

Можете ли вы проверить заголовки, чтобы проверить, какая кодировка установлена, и преобразовать в правильную кодировку, используя encode()?

При желании вы можете изменить кодировку ответа на 'utf-8' перед преобразованием в JSON.

response = requests.get(url)
response.encoding = 'utf-8'
data = json.loads(response.text)

ссылка: https://requests.readthedocs.io/en/master/user/quickstart/#response -content

0 голосов
/ 04 мая 2020

4 685 не является правильно отформатированным числом для синтаксического анализатора, чтобы прочитать его как целое число

...