>>> print text
u'Waldenstr\xf6m'
Существует разница между отображением чего-либо в оболочке (которая использует repr
) и печатью (которая просто выплевывает строку):
>>> u'Waldenstr\xf6m'
u'Waldenstr\xf6m'
>>> print u'Waldenstr\xf6m'
Waldenström
Так что, я не уверен, что твой фрагмент выше действительно произошел. Если это так, то ваш XHTML должен содержать именно эту строку:
<div class="something">u'Waldenstr\xf6m'</div>
(возможно, он был неправильно сгенерирован Python, используя строку repr()
вместо ее str()
?)
Если это правильно и умышленно, вам нужно будет проанализировать этот строковый литерал Python в простую строку. Один из способов сделать это будет:
>>> r= r"u'Waldenstr\xf6m'"
>>> print r[2:-1].decode('unicode-escape')
Waldenström
Если фрагмент вверху на самом деле не совсем правильный, и вы просто спрашиваете, почему repr
в Python экранирует все не-ASCII-символы, ответ заключается в том, что печать не-ASCII на консоль ненадежна в различных средах, так что безопаснее В приведенных выше примерах вы могли бы получить ?
с или хуже вместо ö
, если вам не повезло.
В Python 3 это меняется:
>>> 'Waldenstr\xf6m'
'Waldenström'