反斜杠在字符串文字中的含义是什么?

时间:2018-05-29 08:45:38

标签: python list

我做了一个这样的清单:

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']

我不知道为什么会这样。 " \"是否有任何具体含义?在列表中?

1 个答案:

答案 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