私はいくつかのコードをpython2からpython3に変換しています。 python2でstring.decode( 'utf8')をpython2からpython3に変換する
、私は次のことを行うことができます。
>>> c = '\xe5\xb8\x90\xe6\x88\xb7'
>>> print c
帐户
>>> c.decode('utf8')
u'\u5e10\u6237'
にはどうすればいいのpython3で、同じ出力(U '\ u5e10 \ u6237')を得ることができますか?
編集
は、この問題を持つ他の誰のために、私は、各文字が個々の要素として扱われる必要がある結果を利用する反応を見た後に実現しました。 '¥u5e10¥u6237'のようなエスケープされたユニコード表現は文字列なので、元の中国語文字に対応する部分に自然に分割されません。
>>> c = '帐户'
>>> type(c.encode('unicode-escape').decode('ascii'))
<class 'str'>
>>> [l for l in c.encode('unicode-escape').decode('ascii')]
['\\', 'u', '5', 'e', '1', '0', '\\', 'u', '6', '2', '3', '7']
あなたは、入力文字列内の各文字を分離して、あなたのプログラムの次の部分で再びそれを解析する場合を除き、配列に別々にそれを翻訳する必要があります。私のソリューションは、このようにした
>>> [l.encode('unicode-escape').decode('ascii') for l in c]
['\\u5e10', '\\u6237']
代替ソリューションは、16進数表現に各文字を作る:助けを
>>> [hex(ord(l)) for l in c]
['0x5e10', '0x6237']
感謝を。
個人的に私は 'デフget_unicode_code(テキスト)としてその機能を記述します 結果= '' .join( 文字ORD(文字)<他の128であれば '\\ U' +フォーマット(ORD(CHAR) 、 'x') の文字のテキスト ) ' –
@JonathanHartley私のコードを修正して、それをもっとpyononicにしていただきありがとうございます。 この関数は、Deanの最後の行 'd.encode( 'unicode-escape')と同じものを返しますdecode( 'ascii')' 括弧のエラーを修正し、関数を目的の結果にするコードを追加しました。 フォーマットは整数を16進数に変換するためのもので、ユニコードを手動で生成するために使用されます – HolyDanna
ありがとう、私は今すぐ入手します! –