Найти - Пользователи
Полная версия: Requests - как распечатать json?
Начало » Python для новичков » Requests - как распечатать json?
1
Elaphe
Я выгружаю с сайта response, содержащий json, все вроде бы хорошо, он нормально все декодирует, но результат получается в юникоде, а мне нужно его вывести в txt файл.
Выгрузка и печать в файл происходит с помощью библиотек requests и json вот таким образом:
search_result = requests.get(search_url).text
result = open('result.txt','w')
json.dump(search_result,result)
result.close()
Но json, как сказано выше - он в unicodе, и я получаю данные вида:
\u041c\u043e\u0441\u043a\u0432\u0430, \u0428\u0435\u0440\u0435\u043c\u0435\u0442\u044c\u0435\u0432\u043e
Какие есть пути, чтобы перекодировать все это в UTF-8? Во втором питоне можно было написать
json.dump(search_result,result).encode('utf8')
А в третьем это не прокатывает.
ayb
Прямо на главной странице http://docs.python-requests.org/en/latest/

requests.get(URL).json()

>>> str('\u041c\u043e\u0441\u043a\u0432\u0430, \u0428\u0435\u0440\u0435\u043c\u0435\u0442\u044c\u0435\u0432\u043e')
'Москва, Шереметьево'
Elaphe
Эту функцию я, естественно, осилила. Но
1) она выдает словарь, а вывод словаря в файл - это отдельная песня. Собственно, почему и пришлось модуль json использовать - с ним это удобнее
2) если даже сделать вывод по элементам словаря - все равно ругается на юникод
ayb
Так в чем проблема ? Вы получаете юникодную строку. Дайте урл с которого получаете json.
Elaphe
URL тут ни к чему, я нормально получаю информацию и декодирую ее, вопрос в том, как потом вывести json в txt файл.
JSON всегда будет в unicode, применить к нему encode нельзя, потому что это не str, а dict. То есть надо применять к каждому элементу в отдельности. Я могу это сделать с помощью цикла, но должно быть какое-то более простое и изящное решение.
doza_and
Elaphe
result = open('result.txt','w')
Укажите явно кодировку файла
Elaphe
как потом вывести json в txt файл.
Похоже у вас путаница в голове. Не бывает объекта типа json. Бывают строки, двоичные данные, словари, списки, объекты разных классов. Сначала научитесь выводить в файл строки.
Elaphe
Тьфу ты, как все просто. Кодировку прописала при открытии файла - все сразу встало на свои места.
search_result = requests.get(search_url).text
result = open('result.txt','w', encoding='utf8')
json.dump(search_result,result,ensure_ascii=False)
result.close()
Всем спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB