Python:为什么原始字符串不允许有奇数个反斜杠?

时间:2016-12-10 11:06:52

标签: python string

这很好用:

print(r'\\')

这不是:

print(r'\')

为什么?

编辑。我理解doc说的是什么。但我不明白为什么这个错误/特征/缺陷必须存在。如果这个表达式'\'失败,我不会感到奇怪,因为很明显反斜杠正在逃避引用。但是,原始字符串是不是原始

作为一个反例,在Bash中你可以这样写:

echo '\'

它按预期工作。

与解析器有什么关系吗?

4 个答案:

答案 0 :(得分:5)

来自documentation

  

具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义以下引号字符)。另请注意,后跟换行符的单个反斜杠被解释为字符串的一部分,而不是行连续符。

答案 1 :(得分:1)

当您编写print(r'\')时,Python会将该语句中的\'理解为一个字符。因为python引发了语法错误,因为print函数内部有一个不完整的字符串。 例如,如果您需要打印i am "free" man,则应编写

print("i am \"free\" man")

答案 2 :(得分:1)

这个限制是因为您需要在原始内容中包含'。否则无法将bob said "I'm not hungry"放入字符串中。

所以你最终会遇到一个奇怪的情况,在这种情况下你需要一个转义字符。因此,在原始字符串中,您使用'转义\,并且\保留在字符串中。

所以r'bob said "I\'m not hungry"'是!!

答案 3 :(得分:0)

简单的解决方案是使用三重引号。例如:r"""abc"hello'world"""。即使您使用原始字符串,转义序列在某些情况下仍然有效。