繁体   English   中英

为什么python以不同的方式解释十六进制字符串?

[英]Why python interprets hex strings in different way?

我最近不得不对用\\xAB转义语法编写的字符做一些事情,并注意到不同的字符有不同的行为:

>>>'\x61'
'a'
>>>'\x10'
'\x10'
>>>print('\x61')
a
>>>print('\x10')


我的问题是:为什么>>> '\\x10'不产生'?' ?

它们的解释相同。 不同之处在于str.__repr__定义的表示str.__repr__ ,它更喜欢在可能的情况下使用可打印的 ASCII 字符。

print(x)使用x.__str__ ,而不是x.__repr__ ,它只是返回字符串本身,然后将该字符串写入终端,此时由终端而不是 Python 决定如何显示结果.

尤其是\\x10表示控制字符 DLE(数据链接转义),它对终端没有任何特殊意义,因此通常不显示它,或者在某些情况下,显示一些通用占位符,如? .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM