Pythonの文字列をunicodeに変換
unicodeの文字を含む文字列があります(例:`u2026
など)。なぜか、unicodeではなく、strとして受信されます。どうすればunicodeに戻せますか?
>>> a="Hello\u2026"
>>> b=u"Hello\u2026"
>>> print a
Hello\u2026
>>> print b
Hello…
>>> print unicode(a)
Hello\u2026
>>>
ですから、明らかに unicode(a)
は答えになりません。では、何でしょうか?
53
3
ユニコードのエスケープは、ユニコードの文字列でしか機能しないので、この
は、実際には次の6文字からなる文字列です。
これをunicodeにするには、
decode('unicode-escape')
を使います。unicode-escape` コーデックでデコードします。
これは、非ユニコード文字列の場合、`
u2026
は認識されず、代わりにリテラルな一連の文字として扱われるからです (より明確に言えば、'Hello\u2026'
)。エスケープをデコードする必要がありますが、unicode-escape
コーデックがこれを行います。コーデックの引数を指定することで、
unicode
にも同じように認識させることができることに注意してください。しかし、
a.decode()
の方法の方が素敵です。