Ci sono apparentemente un milione di domande che coinvolgono gli errori Python Unicode in cui il ...ordinal [is] not in range(128)
. Apparentemente, la grande maggioranza coinvolge Python 2.x.Python 3.3 è migliore di 2.7 per la decodifica e la ricodifica del testo Web raschiato su UTF-8 ?? Tipo, molto meglio?
Conosco questi errori perché attualmente sto codificando, decodificando l'inferno. Per un side-project, scroto le pagine web e cerco di normalizzare i dati di testo, in modo che non compaiano sul nostro sito con caratteri pazzi. Per normalizzare i dati, mi baso su HTMLParser di HTMLParser()
e entitydefs
, così come la decodifica del testo da qualunque sua forma originale era (string.decode('[original encoding]', 'ignore'))
e la codifica UTF-8 (string.encode('utf-8', 'ignore')
).
Eppure, apparentemente, c'è sempre un sito su cui i miei sforzi falliscono, sollevando la stessa vecchia UnicodeError: ASCII decoding error...ordinal not in range(128).
e 'così fastidioso.
ho letto (e herehere), che in Python 3 tutto il testo è Unicode. Anche se ho letto molto su Unicode, perché io Non sono un ingegnere del software, non so se Unicode è oggettivamente migliore (cioè, tasso di errore inferiore) rispetto all'opzione di codifica ascii predefinita 2.x. Devo pensare che tutto sarebbe meglio, bu Mi piacerebbe se qualcuno più esperto ed esperto potesse dare una prospettiva.
Mi piacerebbe sapere se dovrei migrare a Python 3 per la sua (migliorata) elaborazione del testo raschiato dal web. Spero che qualcuno qui possa spiegare (o suggerire risorse che spieghino) i pro e i contro dell'approccio di Python 3 all'elaborazione del testo. È meglio?? C'è qualcuno che ha affrontato il mio stesso problema che è già migrato a Python 3 ?? Mi consiglierebbe di iniziare a utilizzare Python 3, se la migrazione dello 2to3
non fosse un problema ??
Grazie in anticipo per qualsiasi assistenza. Ne ho davvero bisogno.
Letture consigliate: http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python – dan04
Leggere il link @ dan04 fornito. Python 3 è molto meglio di Python 2 qui * una volta che sai cosa stai facendo * a causa di "esplicito è meglio di implicito". Cioè, Python 3 costruisce un muro alto tra stringhe Unicode e sequenze di byte - molti problemi qui in Python 2 sono dovuti a tentativi errati di convertire "magicamente" tra di loro. –
@ dan04 Lo leggerò sicuramente. Grazie ragazzi. –