Jako projekt, który pomoże mi w nauczeniu się Pythona, robię przeglądarkę CMD w Reddit przy użyciu danych json (na przykład www.reddit.com/all/ .json). Kiedy pojawiają się określone posty i próbuję je wydrukować (to zakładam, że powoduje błąd), pojawia się ten błąd:Nie można wydrukować znaku ' u2019' w języku Python z obiektu JSON
Traceback (ostatnie ostatnie połączenie): Plik "C: \ Users \ nsaba \ Desktop \ reddit_viewer.py ", wiersz 33, w print ("% d. (% d)% s \ n "% (i + 1, obj [" dane "] [" wynik "], obj [" dane "] [ 'tYTUŁ']))
pliku "C: \ Python33 \ lib \ kodowania \ cp437.py", wiersz 19, do kodowania codecs.charmap_encode powrotnej (wkładu, self.errors, encoding_map) [0] UnicodeEncodeError: kodek 'charmap' nie może kodować znaku '\ u2019' na pozycji 32: mapa znaków do
Oto gdzie obsłużyć dane:
request = urllib.request.urlopen(url)
content = request.read().decode('utf-8')
jstuff = json.loads(content)
Linia używam, aby wydrukować dane wymienione w błędzie powyżej:
print ("%d. (%d) %s\n" % (i+1, obj['data']['score'], obj['data']['title']))
Może ktoś sugerują, gdzie może być nie tak?
Problem prawie na pewno nie ma nic wspólnego z JSON-em ani z żadnym innym elementem kodu. Spróbuj po prostu 'print ('\ u2019')' i sprawdź, czy pojawi się ten sam błąd. Jeśli tak, problem polega na tym, że twój terminal ("skrzynka DOS") nie jest skonfigurowany do poprawnego działania wyjścia Unicode, i to jest to, co musisz naprawić. – abarnert
Tak, masz rację. Powodem dodatkowych danych jest to, że nauczyłem się zadawać pytania, biorąc pod uwagę informacje, które mam, a nie to, co myślę, że może być. –
Ale powinieneś opublikować minimalny kompletny przykład demonstrujący twój problem. Właśnie o to chodzi [SSCCE] (http://sscce.org). Jeśli 'print ('\ u2019')' wystarcza, aby to zademonstrować, każdy bardziej skomplikowany przykład po prostu poprowadzi ludzi w poszukiwaniu dzikich gonitw. Jeśli się martwisz, ludzie mogą zapytać "Dlaczego chcesz wydrukować tę postać?", Możesz dodać kontekst, który to wyjaśnia ... ale mimo to, poprowadź prawdziwy problem. – abarnert