我需要打印出一串二进制转义序列,例如\x05\x03\x87,就像它们出现的那样.当我尝试打印它们时,Python返回一串奇怪的非ASCII字符.如何将它们打印为字符串文字?
Mal*_*lio 14
repr
>>> a='\x05\x03\x87'
>>> print a
?
>>> print repr(a)
'\x05\x03\x87'
Run Code Online (Sandbox Code Playgroud)
编辑
Sven指出OP可能希望每个字符都以十六进制转储,甚至是可打印的,在这种情况下,我能想到的最佳解决方案是:
>>> print ''.join(map(lambda c:'\\x%02x'%c, map(ord, a)))
\x05\x03\x87
Run Code Online (Sandbox Code Playgroud)
其他编辑
四年后,我发现这可能既快又可读:
>>> print ''.join(map(lambda c:'\\x%02x'% ord(c), a))
Run Code Online (Sandbox Code Playgroud)
甚至
>>> print ''.join([ '\\x%02x'% ord(c) for c in a ])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7670 次 |
| 最近记录: |