25

Unicode の生のリテラルを変数に割り当てると、その値を読み取ることができます。

>>> 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
Сообщение отправлено

しかし、Unicode 文字列ではなくプレーンな文字列に既に値を割り当てている場合、次のことはできません。

>>> 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

どうすればデコードして読むことができますか?

4

2 に答える 2

34

unicode_escape コーデックを使用します。

s.decode('unicode_escape')
于 2011-06-28T09:41:47.717 に答える
0

デコード時に奇妙な結果が得られる場合は、次のことを試してください

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

Python 端末がデフォルトの ASCII を使用しており、範囲外のシンボルがある可能性があります。

于 2016-05-19T13:22:50.170 に答える