2013-06-27 26 views
9

Tôi đã phần tiếp theo của mã:Chuyển đổi chuỗi từ xmlcharrefreplace trở lại 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'опа' 

Bạn có bất cứ ý tưởng làm thế nào để chuyển đổi st1 trở lại u"опа"?

Trả lời

15

Sử dụng một thể hiện của HTMLParser.HTMLParser():

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

Nó hoàn toàn làm việc với 'u "опа"', nhưng không hoạt động trong situatuion này: '>>> từ HTMLParser nhập khẩu HTMLParser' '> >> p = HTMLParser() ' ' >>> st = u "michel tel & # 243" ' ' >>> p.unescape (st) ' ' u'michel tel & # 243'' –

+2

@TuralGurbanov: Điều đó là vì bạn quên thêm ';': 'u'michel tel ó ''. Bạn cần truyền vào các thực thể * hợp pháp * XML. –

+0

Ồ :) cảm ơn bạn. –

Các vấn đề liên quan