「unicode(head.contents [3])」を使用してタグのコンテンツを取得しようとすると、「Christensen Sk\xf6ld」のような出力が表示されます。エスケープシーケンスを文字列として返したい。 Pythonでそれを行う方法?
Pythonが名前を通常の文字列と見なすと仮定すると、最初にそれをユニコードにデコードする必要があります:
>>> name
'Christensen Sk\xf6ld'
>>> unicode(name, 'latin-1')
u'Christensen Sk\xf6ld'
これを達成する別の方法:
>>> name.decode('latin-1')
u'Christensen Sk\xf6ld'
文字列の前の "u"に注意してください。これは、コード化されていないことを示します。これを印刷すると、アクセント付きの文字が適切に表示されます。
>>> print name.decode('latin-1')
Christensen Sköld
ところで:必要に応じて、de "encode"メソッドを使用して、Unicodeを次のように変換できます。 UTF-8文字列:
>>> name.decode('latin-1').encode('utf-8')
'Christensen Sk\xc3\xb6ld'
Unicodeエスケープ付きのバイト文字列が__b"\N{SNOWMAN}"
_であるとすると、b"\N{SNOWMAN}".decode('unicode-escape)
は期待されるUnicode文字列_u'\u2603'
_を生成します。
私はそれが実際に正しく機能していると思います。デフォルトでは、Pythonは文字列をASCIIエンコーディングで表示します。これは、すべての端末がUnicodeをサポートしているわけではないためです。ただし、実際に文字列を印刷する場合は、機能するはずです。次の例:
>>> u'\xcfa'
u'\xcfa'
>>> print u'\xcfa'
Ïa