我需要将此文本文件的第三列作为十六进制字符串加载
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'
如何打开文件以便我可以将第三列作为十六进制字符串:
'\xF3\xBE\x80\x80'
我也试过二进制模式和十六进制模式,没有成功。
答案 0 :(得分:7)
你可以:
\x
- es 代码:
>>> '\\xF3\\xBE\\x80\\x80'.replace('\\x', '').decode('hex')
'\xf3\xbe\x80\x80'
请注意反斜杠的相应解释。当字符串表示为'\ xf3'时,表示它是一个字节值为0xF3的单字节字符串。如果是'\\ xf3',这是您的输入,则表示由4个字符组成的字符串:\
,x
,f
和3
答案 1 :(得分: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(sys.maxunicode==1114111
)上使用Python 2.6.4,在Gentoo上使用Python 2.6.5(sys.maxunicode==65535
);在Ubuntu上,unicode_escape-decode结果是\uDBB8\uDC03
,而在Gentoo上它是u'\U000fe003'
,两者都是正确的长度2.除非它在2.6.4和2.6.5之间固定,我印象深刻的是2- byte-per-unicode-character Gentoo版本报告正确的字符。
答案 2 :(得分:5)
如果您使用的是Python2.6 +,这是一种使用eval的安全方法
>>> from ast import literal_eval
>>> item='\\xF3\\xBE\\x80\\x80'
>>> literal_eval("'%s'"%item)
'\xf3\xbe\x80\x80'
答案 3 :(得分:0)
如果您信任来源,则可以使用eval('"%s"' % data)
答案 4 :(得分:0)
在删除“\ x”作为Eli的答案后,您可以这样做:
int("F3BE8080",16)