不应该r'\'在python中是一个有效的字符串值?

时间:2012-10-27 09:16:08

标签: python python-3.x

  

可能重复:
  why can’t I end a raw string with a \

鉴于r'\\'相当于'\\\\',为什么r'\'不等同于'\\'

我在python3.2上得到的是

print(r'\')
  File "<stdin>", line 1
    print(r'\')
              ^
SyntaxError: EOL while scanning string literal

1 个答案:

答案 0 :(得分:11)

除非是偶数个反斜杠的一部分,否则不能将反斜杠作为原始字符串中的最后一个字符;它逃脱了收尾报价。

将其与:

进行比较
>>> r'\ '
'\\ '

来自string literal documentation

  

当存在'r''R'前缀时,字符串中包含反斜杠后面的字符不会更改,并且所有反斜杠都保留在字符串中。例如,字符串文字r"\n"由两个字符组成:反斜杠和小写'n'。字符串引号可以使用反斜杠进行转义,但反斜杠仍保留在字符串中;例如,r"\""是一个有效的字符串文字,由两个字符组成:反斜杠和双引号; r"\"不是有效的字符串文字(即使原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义以下引号字符)。