Python:如何在不转换为ASCII的情况下使用print

4

我有一些十六进制和数字混合的内容,我想打印出来:

"\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\xebS\xc3\x90\x08\x00\x00\x00\xed\x9b\xbcX\x00\x00\x00\x00\x00\x00\x00\x00\x820416e9c05a9942f67d1ee0b53642e79fae45af47a3afceb6a21a94c8487e1290645d789253fb05a1a8ee529b2cb4de2877fbbe11aa24a64dc20450ff722e41f92d\xed\x18\x03\x00\x00\x00\x00\x00"

当我打印时,它会转换成ASCII格式,如何保留包括斜杠符号在内的格式。我尝试了以下代码:

' '.join(hex(ord(i)) for i in binascii.unhexlify('deadbeef'))

但它最终删除了反斜杠,如果我试图添加它,它会添加到中间的那部分。我只想精确地打印出这个,我可以在C语言中做到这一点,为什么在Python中这么难!


如果它是一个固定的字符串,你可以使用 r 前缀将其声明为原始字符串。 - shizhz
2个回答

6

使用原始字符串r'你好,世界'

x = r"\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\xebS\xc3\x90\x08\x00\x00\x00\xed\x9b\xbcX\x00\x00\x00\x00\x00\x00\x00\x00\x820416e9c05a9942f67d1ee0b53642e79fae45af47a3afceb6a21a94c8487e1290645d789253fb05a1a8ee529b2cb4de2877fbbe11aa24a64dc20450ff722e41f92d\xed\x18\x03\x00\x00\x00\x00\x00"`
print(x)

谢谢,这让我找到了正确的答案。string_raw = string.encode('string-escape') - user153882

0

获得所需功能可能最简单的方法是使用原始字符串字面值(请参见字符串字面值文档)。

简而言之,可以在字符串声明前加上r或R:

>>> str = r"\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\xebS\xc3\x90\x08\x00\x00\x00\xed\x9b\xbcX\x00\x00\x00\x00\x00\x00\x00\x00\x820416e9c05a9942f67d1ee0b53642e79fae45af47a3afceb6a21a94c8487e1290645d789253fb05a1a8ee529b2cb4de2877fbbe11aa24a64dc20450ff722e41f92d\xed\x18\x03\x00\x00\x00\x00\x00"
>>> print str
\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\xebS\xc3\x90\x08\x00\x00\x00\xed\x9b\xbcX\x00\x00\x00\x00\x00\x00\x00\x00\x820416e9c05a9942f67d1ee0b53642e79fae45af47a3afceb6a21a94c8487e1290645d789253fb05a1a8ee529b2cb4de2877fbbe11aa24a64dc20450ff722e41f92d\xed\x18\x03\x00\x00\x00\x00\x00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接