Come progetto per aiutarmi ad imparare Python, sto creando un visualizzatore CMD di Reddit utilizzando i dati di JSON (ad esempio www.reddit.com/all/ .json). Quando alcuni messaggi vengono visualizzati e provo a stamparli (questo è quello che presumo sta causando l'errore), ottengo questo errore:Impossibile stampare il carattere ' u2019' in Python dall'oggetto JSON
Traceback (ultima chiamata ultima): File "C: \ Users \ nsaba \ Desktop \ reddit_viewer.py ", riga 33, nella stampa ("% d. (% d)% s \ n "% (i + 1, obj [" dati "] [" punteggio "], obj [" dati "] [ 'title']))
file "C: \ Python33 \ lib \ codifiche \ cp437.py", linea 19, nel codificare codecs.charmap_encode ritorno (ingresso, self.errors, encoding_map) [0] UnicodeEncodeError: codec 'charmap' non può codificare il carattere '\ u2019' nella posizione 32: mappe di caratteri su
Qui è dove mi occupo dei dati:
request = urllib.request.urlopen(url)
content = request.read().decode('utf-8')
jstuff = json.loads(content)
La linea che uso per stampare i dati elencati l'errore precedente:
print ("%d. (%d) %s\n" % (i+1, obj['data']['score'], obj['data']['title']))
Qualcuno può suggerire dove potrebbe andare storto?
Il problema quasi certamente non ha nulla a che fare con JSON, o con qualsiasi altra cosa nel codice. Prova semplicemente a 'print ('\ u2019')' e vedi se ottieni lo stesso errore. Se è così, il problema è che il tuo terminale ("scatola DOS") non è impostato per fare in modo che l'uscita Unicode funzioni correttamente, ed è quello che devi correggere. – abarnert
Sì hai ragione. La ragione per i dati extra è perché ho imparato a porre domande date le informazioni che ho, e non su ciò che penso possa essere. –
Ma dovresti pubblicare l'esempio completo minimo che mostri il tuo problema. Ecco cos'è un [SSCCE] (http://sscce.org). Se 'print ('\ u2019')' è sufficiente per dimostrarlo, un esempio più complicato è solo quello di guidare le persone su inseguimenti di oche selvagge. Se sei preoccupato, le persone potrebbero chiedere "Perché vuoi stampare quel personaggio?", Quindi puoi aggiungere il contesto che lo spiega ... ma ancora, portare il problema reale. – abarnert