【问题标题】:Python: How to use print without converting to ASCIIPython:如何在不转换为 ASCII 的情况下使用打印
【发布时间】:2017-03-09 01:36:41
【问题描述】:

我混合了十六进制和一些数字,我想打印:

"\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 \固定的\ X18 \ X03 \ X00 \ X00 \ X00 \ X00 \ X00"

当我打印时,它会将其转换为 ASCII,我如何保持包括斜线符号在内的格式。我试过了

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

但它最终会删除反斜杠,或者如果我尝试添加它,它会添加到中间的反斜杠。我只想打印这个,我可以用C做,为什么用Python这么难!

【问题讨论】:

  • 如果它是一个组合字符串,您可以将其声明为带有 r 前缀的原始字符串。

标签: python string python-2.7 formatting


【解决方案1】:

使用 raw string r'hello world'

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')
【解决方案2】:

获得所需功能的最简单方法可能是使用原始字符串文字(请参阅String Literal 文档)

简而言之,在字符串声明前加上 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

【讨论】:

    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 2013-08-09
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    相关资源
    最近更新 更多