2011-06-28 3 views
24

私は変数にユニコード生のリテラルを割り当てた場合、私はその値読み取ることができます。ユニコードの生のリテラルを読み込み可能な文字列にデコードするには?

>>> s = u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e' 
>>> s 
u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e' 
>>> print s 
Сообщение отправлено 

をしかし、私はまだプレーンではなく、ユニコード文字列に値を割り当てたとき、私はできません:

>>> s = '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e' 
>>> s 
'\\u0421\\u043e\\u043e\\u0431\\u0449\\u0435\\u043d\\u0438\\u0435 \\u043e\\u0442\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u043e' 
>>> print s 
\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e 

どのようにデコードして読み込むことができますか?

答えて

31

unicode_escape codecを使用します。

s.decode('unicode_escape') 
+3

(なぜなら、 '\ uXXXX'はUnicode以外の文字列リテラルでは* verbatim *であるからです) –

+0

ロシア文字のための特別なソリューションが見つかりました –

0

試みをデコードするときに

print repr(s).decode('unicode-escape').encode('latin-1') // or encode using some other encoding 

次の奇妙な結果を得ている場合は、Pythonの端末がデフォルトのASCIIを使用していると外に出たシンボルがあることが考えられ範囲。

関連する問題