Мой ответ на подобные вещи всегда звучит так: «Используйте Красивый суп ».И я всегда за это тоже голосую (что, как мне кажется, показывает, что другие со мной согласны, что это хорошо).
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup(u'''<r><e RoleID="3247" Name="中文"></e></r>''')
>>> print soup.r.e['name']
中文
Дело в том, что libxml2 преобразует эти символы в соответствующие объекты XML, которыедля XML это правильно.Beautiful Soup не имеет таких представлений о том, что нужно быть правильным, поэтому он просто дает вам то, что вы хотите.
(Обратите внимание, что в этом случае использование либо u'...'
, либо '...'
будет работать;Я просто обозначил его как unicode
, потому что так он себя чувствует лучше - что бы вы ни делали, Beautiful Soup дает вам Unicode .)