有人可以告诉我如何在python中将unicode字符转换为utf-8吗?
例如:
输入 - अअघꗄ
输出 - E0A485 E0A485 E0A498 EA9784
我在python控制台中尝试了以下方法:
蟒提示符>>> character ="अ"
蟒提示符>>>字符
蟒提示符>>> ' \ xe0 \ XA4 \ X85'
在上面的示例中,如果我只是打印变量" character"在控制台中,我会得到' \ xe0 \ xa4 \ x85'作为输出。但我需要E0A485形式的输出。简而言之,我得到的输出是' \ xe0 \ xa4 \ x85'有3' \ x'转义字符。我怎样才能摆脱这些' \ x?s?所以我的输出只是e0a485或E0A485
答案 0 :(得分:1)
只需在你的unicode字符串上调用encode()
,然后hexlify()
就可以了。
s = u'\u0905 \u0905 \u0918 \ua5c4'
print s
अ अ घ ꗄ
s_utf8 = s.encode('utf8')
print s_utf8
अ अ घ ꗄ
>>> s_utf8
'\xe0\xa4\x85 \xe0\xa4\x85 \xe0\xa4\x98 \xea\x97\x84'
>>> from binascii import hexlify
>>> hexlify(s_utf8)
>>> 'e0a48520e0a48520e0a49820ea9784'
如果要保留空格,可以这样做:
>>> ' '.join(hexlify(c) for c in s_utf8.split())
'e0a485 e0a485 e0a498 ea9784'
>>> b' '.join(hexlify(c) for c in s_utf8.split()) # Python 3
b'e0a485 e0a485 e0a498 ea9784'
或者一气呵成:
>>> s
u'\u0905 \u0905 \u0918 \ua5c4'
>>> ' '.join(hexlify(c.encode('utf8')) for c in s.split())
'e0a485 e0a485 e0a498 ea9784'
>>> b' '.join(hexlify(c.encode('utf8')) for c in s.split()) # Python 3
b'e0a485 e0a485 e0a498 ea9784'
您可以在结果字符串上调用upper()
以生成'E0A485 E0A485 E0A498 EA9784'
:
答案 1 :(得分:-1)
你可以使用带有backslashreplace标志的encode,如下所示:
>>> character.encode('ascii', 'backslashreplace')
b'\\u0905 \\u0905 \\u0918 \\ua5c4'
如果你想要大写的话,你总是可以添加.upper()。