2013-06-27 26 views
9

Sono parte successiva di codice:Converti da xmlcharrefreplace torna a utf-8

In [8]: st = u"опа" 

In [11]: st.encode("ascii", "xmlcharrefreplace") 
Out[11]: 'опа' 

In [14]: st1 = st.encode("ascii", "xmlcharrefreplace") 

In [15]: st1.decode("ascii", "xmlcharrefreplace") 
Out[15]: u'опа' 

In [16]: st1.decode("utf-8", "xmlcharrefreplace") 
Out[16]: u'опа' 

Avete qualche idea di come convertire st1 tornare a u"опа"?

risposta

15

Utilizzando un'istanza di HTMLParser.HTMLParser():

>>> from HTMLParser import HTMLParser 
>>> parser = HTMLParser() 
>>> parser.unescape('опа') 
u'\u043e\u043f\u0430' 
>>> print parser.unescape('опа') 
опа 
+0

E 'perfettamente lavorare con 'u "опа"', ma non funziona in questo situatuion: '>>> da HTMLParser importazione HTMLParser' '> >> p = HTMLParser() ' ' >>> st = u "michel tel & # 243" ' ' >>> p.unescape (st) ' ' u'michel tel & # 243'' –

+2

@TuralGurbanov: Che è perché hai dimenticato di aggiungere il ';': 'u'michel tel ó' '. È necessario passare in * legal * entità XML. –

+0

Oh :) grazie. –