54

重複の可能性:
ASCII 文字列をユニコードとして扱い、Python でエスケープ文字をエスケープ解除するにはどうすればよいですか?
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)に答えではありません。じゃあ何?

4

3 に答える 3

78

Unicode エスケープは Unicode 文字列でのみ機能するため、これは

 a="\u2026"

実際には、'\'、'u'、'2'、'0'、'2'、'6' の 6 文字の文字列です。

これからユニコードを作成するには、次を使用しますdecode('unicode-escape')

a="\u2026"
print repr(a)
print repr(a.decode('unicode-escape'))

## '\\u2026'
## u'\u2026'
于 2012-04-22T13:59:40.150 に答える
28

unicode-escapeコーデックでデコードします。

>>> a="Hello\u2026"
>>> a.decode('unicode-escape')
u'Hello\u2026'
>>> print _
Hello…

これは、非 Unicode 文字列の場合、\u2026が認識されず、文字列のリテラルとして扱われるためです (より明確に言えば、'Hello\\u2026')。エスケープをデコードする必要があり、unicode-escapeコーデックがそれを実行できます。

unicodecodec 引数を指定することで、同じ方法で認識できることに注意してください。

>>> unicode(a, 'unicode-escape')
u'Hello\u2026'

しかし、a.decode()方法はより良いです。

于 2012-04-22T13:59:53.707 に答える
17
>>> a="Hello\u2026"
>>> print a.decode('unicode-escape')
Hello…
于 2012-04-22T14:00:00.530 に答える