我做了一个这样的清单:
list=["\0","\1","\2","\3","\4","\5","\6","\7","\8","\9","\10","\11"]
但如果我打印列表,输出就像这样:
['\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\\8', '\\9', '\x08', '\t']
我不知道为什么会这样。 " \"是否有任何具体含义?在列表中?
答案 0 :(得分:7)
反斜杠用于在字符串文字中转义特殊(不可打印)字符。 public class ReadableImpl implements Readable {
public void doThis() {
System.out.println("do this");
}
public void doThat() {
System.out.println("do that");
}
/**
* this is funciton overloading
*/
public void doThat(String userSpecific) {
System.out.println("do that for:" + userSpecific);
}
}
用于换行,ReadableImpl
用于标签,\n
用于换页(很少使用),还有几个存在。
当您给出字符串文字\t
时,您实际上表示一个字符串,其中只有一个字符是(不可打印的)NUL字符(0字节)。您可以在字符串文字中将其表示为\f
。 "\0"
(字符串中的1个字节)等也是如此。
实际上,\0
和\1
是不同的,因为在反斜杠之后你必须用八进制表示法表示你想要的字节的值,例如: G。仅使用数字\8
... \9
。如此有效,0
之前和7
之前的反斜杠没有特殊含义,而8
会产生两个字符,即反斜杠逐字和9
作为数字逐字
当你现在打印这样一个字符串文字的表示(例如,通过将它打印在你打印的列表中)时,Python解释器会重新创建内部字符串的表示(它应该看起来像一个字符串文字)。这不是字符串内容,而是字符串的版本,因为您可以在Python程序中表示它,i。即用引号括起来并使用反斜杠来转义特殊字符。但是,Python解释器并不使用八进制表示法表示特殊字符。它使用十六进制表示法,它将每个特殊字符引入\8
,后跟正好两个十六进制字符。
这意味着8
变为\x
,\0
变为\x00
等。如上所述,\1
实际上是的表示两个字符,即反斜杠和数字\x01
。然后Python解释器将反斜杠转义为双反斜杠\8
,并将8
作为普通字符附加。
输入\\
是值为8的字符(因为八进制10是十进制8,也是十六进制8,查找八进制和十六进制数来了解它)。因此输入8
变为\10
。 \10
是值为9的字符,它是一个特殊表示法的制表符,即\x08
。