Ho una domanda sulla codifica di Python 2. Sto cercando di decodificare una stringa ASCII che contiene il codice Unicode di una lettera in Unicode, e quindi ricodificarla in Latin-1, ma senza successo. Ecco un'illustrazione:
In[27]: d = u"u010d"
In[28]: print d.encode("utf-8")
č
In[29]: d1 = "u010d"
In[30]: d1.decode("ascii").encode("utf-8")
Out[30]: "\u010d"
Mi piacerebbe convertire "u010d"
a "č"
. Esistono soluzioni integrate per evitare la sostituzione di stringhe personalizzate?
risposte:
1 per risposta № 1Quando lo fai
d1 = "u010d"
in realtà ottieni questa stringa:
In [3]: d1
Out[3]: "\u010d"
Questo perché le stringhe "normali" (non Unicode) non riconoscono il unnnn
sequenza di escape e quindi convertirlo in una letterale barra rovesciata, seguita da unnnn
.
Al fine di decodificarlo, è necessario utilizzare il unicode_escape
codec:
In [4]: print d1.decode("unicode_escape").encode("utf-8")
č
Ma ovviamente non dovresti usare sequenze di escape Unicode in stringhe non Unicode in primo luogo.