Как декодировать весь Unicode при импорте словаря в json файл?
Я спарсил данные с сайта и они оказались кодированными в unicode. Могу ли я как-то заранее, до импорта всех данных в файл JSON декодировать этот unicode?
Сергей Горностаев, Я новичок в этом, поэтому сам не понимаю во что декодировать. Просто чтобы это были нормальные слова, а не вот это "\u0411\u0435\u0437\u00a0\u0437\u0430\u043b\u043e\u0433\u0430"
Я бы очень хотел вам ответить, но у меня появилось другое затруднение. Код вообще перестал работать.. Прокрутил 42 ссылки и на 43 сломался. Решил начать заново, ничего не трогая, он вообще отказывается работать. На счёт дампа в json. Да, когда я всё перевёл в json, оно стало выглядеть как unicode, хотя до этого в print выглядело нормально. Если я введу этот параметр и каким-то чудом смогу исправить код, не будет ли мой json файл пуст?
Да, когда я всё перевёл в json, оно стало выглядеть как unicode, хотя до этого в print выглядело нормально.
Все верно, requests.get().json() (а я подозреваю, что использована именно эта библиотека) возвращает список или словарь в кодировке UTF-8 (в большинстве случаев) и кириллица работает нормально, json.dump/s() же по умолчанию экранирует все не-ascii символы (т.е. все кроме латиницы/цифр и некоторых символов/знаков пунктуации). ensure_ascii=False говорит что делать этого не стоит.
Если я введу этот параметр и каким-то чудом смогу исправить код, не будет ли мой json файл пуст?
Нет, если json.dump() отработал без ошибок, то файл пустым быть не может (по идее, даже если сервер вернул пустой ответ, то в файл запишутся пустые кавычки).
По хорошему - каждый запрос нужно оборачивать в try ... except:
try:
response = requests.get(url)
# делать с данными запроса что-то
except requests.exceptions.RequestException: # ЕМНИП RequestException обрабатывает все ошибки
# Пропустить итерацию и перейти к следующей ссылке (как именно - во многом зависит от текущей реализации)
А в остальном, без кода могу посоветовать только 2 вещи:
Смотрите на ошибки. Я конечно допускаю, что может быть какой-то особый глюк питона или винды, но обычно, если код не запускается, то в консоль выводится текст ошибки и, зачастую, даже указывается строка, на которой она произошла.
Отлаживайте код постепенно. Самый простой вариант - распихивать print() c текстом (желательно разным) во все ключевые точки, чтобы можно было понять куда код успевает дойти.
AlexNest, Полезная информация. Но я кажется уже нашёл в чём была моя ошибка. Мой код не человек и сайт начал возмущаться, почему это я так быстро всё просматриваю. Начал выдавать проверку на робота, видимо. Вот мой код и не мог найти нужные ему части HTML кода. Но всё исправилось перезагрузкой роутера :)