可能性のある複製:
PythonでASCII文字列をUnicodeとして扱い、エスケープされた文字をエスケープ解除するにはどうすればよいですか?
python文字列でUnicodeエスケープシーケンスをUnicode文字に変換する方法
私はユニコード文字を含む文字列を持っています\u2026
など。どういうわけか、それはunicode
として受信されませんが、str
として受信されます。ユニコードに戻すにはどうすればよいですか?
>>> a="Hello\u2026"
>>> b=u"Hello\u2026"
>>> print a
Hello\u2026
>>> print b
Hello…
>>> print unicode(a)
Hello\u2026
>>>
したがって、明らかにunicode(a)
は答えではありません。それでは何ですか?
UnicodeエスケープはUnicode文字列でのみ機能するため、これは
a="\u2026"
実際には6文字の文字列です: '\'、 'u'、 '2'、 '0'、 '2'、 '6'。
これからユニコードを作成するには、decode('unicode-escape')
を使用します。
a="\u2026"
print repr(a)
print repr(a.decode('unicode-escape'))
## '\\u2026'
## u'\u2026'
unicode-escape
コーデックでデコードします:
>>> a="Hello\u2026"
>>> a.decode('unicode-escape')
u'Hello\u2026'
>>> print _
Hello…
これは、Unicode以外の文字列では\u2026
が認識されず、代わりにリテラルの一連の文字として処理されるためです(より明確に言うと、'Hello\\u2026'
)。エスケープをデコードする必要がありますが、unicode-escape
コーデックでそれを行うことができます。
Codec引数を指定することで、unicode
を取得して同じ方法で認識できることに注意してください。
>>> unicode(a, 'unicode-escape')
u'Hello\u2026'
しかし、a.decode()
の方法の方が優れています。
>>> a="Hello\u2026"
>>> print a.decode('unicode-escape')
Hello…