在python中print("backslash \")
会产生错误,但print("backslash \ ")
不会产生错误。
print(backslash \")
中的在\和"之间没有空格。
这会产生SyntaxError: EOL while scanning string literal
而如果我在\和"之间留出空格。 ,然后没有错误。为什么呢?
更多例子
print(" this is double backslash \\\sad ")
上述声明不会产生任何错误,它会将输出生成为: -
this is a single backslash \\sad
我在写这个时得到了相同的输出: -
print(" this is a single backslash \\\\sad ")
在这里,我分别对每个\
进行了转义,所以这是有效的,但为什么前一个有效呢?
答案 0 :(得分:4)
\
字符是转义序列字符。 \"
将引用转义为字符串值的一部分,而不是用于表示字符串开头或结尾的分隔符。
通过添加空格,您生成了一个不存在的转义序列,而\
则被解释为文字反斜杠。
请参阅string literals documentation:
反斜杠(
\
)字符用于转义具有特殊含义的字符,例如换行符,反斜杠本身或引号字符。
但是没有识别的转义序列的\
始终是普通的\
。请参阅文档以了解已识别的序列。
请注意,这也意味着您需要能够转义转义序列;因此\\
生成一个反斜杠文字。这样,您可以在字符串中包含\\n
,并将其解释为一个\
字符和n
,而\n
会生成一个换行符。
答案 1 :(得分:1)
因为当你print("backslash \")
逃离最后"
因此你会收到错误..有关转义字符的更多信息:https://docs.python.org/2/reference/lexical_analysis.html