我做了一个这样的清单:
list=["\0","\1","\2","\3","\4","\5","\6","\7","\8","\9","\10","\11"]
Run Code Online (Sandbox Code Playgroud)
但如果我打印列表,输出是这样的:
['\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\\8', '\\9', '\x08', '\t']
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会这样.列表中是否有"\"的具体含义?
反斜杠用于转义字符串文字中的特殊(不可打印)字符. \n用于换行符,\t用于制表符,用于换页\f(很少使用),还有几个存在.
当您给出字符串文字时,"\0"您实际上表示一个字符串,其中只有一个字符是(不可打印的)NUL字符(0字节).您可以将其表示为\0字符串文字.同样适用\1(字符串中的1个字节)等.
其实,\8和\9是不同的,因为一个反斜杠之后,你必须使用表示数字的你八进制想要的字节,例如值0... 7只.如此有效,在之前8和之前的反斜杠9没有特殊含义,并\8产生两个字符,即反斜杠逐字和8逐字数字.
当您现在打印此类字符串文字的表示形式时(例如,通过将其打印在您打印的列表中),Python解释器将重新创建内部字符串的表示形式(应该看起来像字符串文字).这不是字符串内容,而是字符串的版本,因为您可以在Python程序中表示它,即用引号括起来并使用反斜杠来转义特殊字符.但是,Python解释器不使用八进制表示法表示特殊字符.它使用十六进制表示法,它引入每个特殊字符,\x后跟恰好两个十六进制字符.
这意味着\0变成\x00,\1变成\x01等.\8如上所述,实际上是两个字符的表示,即反斜杠和数字8.然后Python解释器将反斜杠转义为双反斜杠\\,并将其8作为普通字符附加.
输入\10是值为8的字符(因为八进制10是十进制8,也是十六进制8,查找八进制和十六进制数来了解它).所以输入\10就变成了\x08.的\11是与值9是用于其中一个特殊的符号存在一个制表符的字符,即\t.