例如,我有一个字节对象

test = b'\x83\xf8\x41\x41\x41'

我想将此对象打印到标准输出,但如果我这样做,Python 会将对象中的可打印字符转换为 ASCII:
print(test)
b'\x83\xf8AAA'

有没有办法强制 Python 3 将可打印字符(在本例中为三个“A”)打印为转义字节?

也就是说,print(test) 输出
b'\x83\xf8\x41\x41\x41'

最佳答案

不,repr() 输出不可配置;它是一个调试工具。

您可以使用 binascii.hexlify() 来获得十六进制表示:

>>> test = b'\x83\xf8\x41\x41\x41'
>>> from binascii import hexlify
>>> test = b'\x83\xf8\x41\x41\x41'
>>> print(hexlify(test))
b'83f8414141'

或者您可以将每个单独的“字节”值转换为十六进制表示:
>>> print("b'{}'".format(''.join('\\x{:02x}'.format(b) for b in test)))
b'\x83\xf8\x41\x41\x41'

这产生了另一种表示。

关于python-3.x - 在 Python 3 中打印字节时强制转义可打印字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25348229/

10-12 23:10