Как проект, который поможет мне изучить Python, я делаю CMD-просмотрщик Reddit с использованием данных json (например, www.reddit.com/all/ .json). Когда появляются определенные сообщения, и я пытаюсь их распечатать (это то, что я предполагаю, вызывает ошибку), я получаю эту ошибку:Невозможно напечатать символ ' u2019' в Python от объекта JSON
Traceback (последний последний звонок): Файл «C: \ Users \ nsaba \ Desktop \ reddit_viewer.py ", строка 33, в print ("% d. (% d)% s \ n "% (i + 1, obj ['data'] ['score'], obj ['data'] [ 'название']))
Файл "C: \ Python33 \ Lib \ кодировок \ cp437.py", строка 19, в обратном кодирования codecs.charmap_encode (вход, self.errors, encoding_map) [0] UnicodeEncodeError: кодек 'charmap' не может кодировать символ '\ u2019' в позиции 32: символьные карты на
Вот где я обрабатывать данные:
request = urllib.request.urlopen(url)
content = request.read().decode('utf-8')
jstuff = json.loads(content)
Линия я использую, чтобы напечатать данные, как указано в сообщении об ошибке выше:
print ("%d. (%d) %s\n" % (i+1, obj['data']['score'], obj['data']['title']))
Можно ли предположить, где я мог бы быть неправильно?
Проблема почти наверняка не имеет ничего общего с JSON или с чем-либо еще в вашем коде. Попробуйте просто 'print ('\ u2019')' и посмотрите, получится ли у вас такая же ошибка. Если это так, проблема заключается в том, что ваш терминал («DOS box») не настроен для корректного вывода Юникода, и это то, что вам нужно исправить. – abarnert
Да, вы правы. Причина дополнительных данных заключается в том, что я научился задавать вопросы, учитывая информацию, которую я имею, а не о том, что, на мой взгляд, может быть. –
Но вы должны опубликовать минимальный полный пример, демонстрирующий вашу проблему. Вот что такое [SSCCE] (http://sscce.org). Если 'print ('\ u2019')' достаточно, чтобы продемонстрировать это, любой более сложный пример просто приведет людей к диким гусям. Если вы беспокоитесь, люди могут спросить: «Зачем вам печатать этот персонаж?», Тогда вы можете добавить контекст, который его объясняет ... но все же привести к реальной проблеме. – abarnert