6

このテキストファイルの3番目の列を16進文字列としてロードする必要があります

http://www.netmite.com/android/mydroid/1.6/external/skia/emoji/gmojiraw.txt

>>> open('gmojiraw.txt').read().split('\n')[0].split('\t')[2]
'\\xF3\\xBE\\x80\\x80'

3番目の列を16進文字列として取得できるように、ファイルを開くにはどうすればよいですか。

'\xF3\xBE\x80\x80'

バイナリモードと16進モードも試しましたが、成功しませんでした。

4

5 に答える 5

7

あなたはできる:

  1. \x-esを削除します
  2. 結果の文字列に.decode('hex')を使用します

コード:

>>> '\\xF3\\xBE\\x80\\x80'.replace('\\x', '').decode('hex')
'\xf3\xbe\x80\x80'

バックスラッシュの適切な解釈に注意してください。文字列表現が'\xf3'の場合、それはバイト値0xF3のシングルバイト文字列であることを意味します。入力である「\\xf3」の場合、、、、および4文字で構成される文字列を意味します\xf3

于 2010-08-19T06:06:44.283 に答える
7

素早い返信

your_string.decode('string_escape')

>>> a='\\xF3\\xBE\\x80\\x80'
>>> a.decode('string_escape')
'\xf3\xbe\x80\x80'
>>> len(_)
4

ボーナス情報

>>> u='\uDBB8\uDC03'
>>> u.decode('unicode_escape')

トリビア

興味深いのは、Karmic Koala Ubuntu で Python 2.6.4 ( sys.maxunicode==1114111)、Gentoo で Python 2.6.5 ( ) を使用していることsys.maxunicode==65535です。Ubuntu では、unicode_escape-decode の結果は\uDBB8\uDC03であり、Gentoo ではu'\U000fe003'、どちらも長さ 2 です。2.6.4 と 2.6.5 の間で修正されたものでない限り、Unicode 文字あたり 2 バイトの Gentoo バージョン レポートに感銘を受けました。正しい文字。

于 2010-09-18T01:21:31.147 に答える
5

Python2.6+ を使用している場合、eval を安全に使用する方法は次のとおりです。

>>> from ast import literal_eval
>>> item='\\xF3\\xBE\\x80\\x80'
>>> literal_eval("'%s'"%item)
'\xf3\xbe\x80\x80'
于 2010-08-19T08:30:26.397 に答える
1

Eliの答えとして「\x」を取り除いた後、次のことができます。

int("F3BE8080",16)
于 2010-08-19T09:06:20.347 に答える
0

ソースを信頼する場合は、eval('"%s"' % data)

于 2010-08-19T07:13:19.423 に答える