【问题标题】:Shouldn't r'\' be a valid string value in python? [duplicate]r'\' 不应该是python中的有效字符串值吗? [复制]
【发布时间】:2012-10-27 09:16:07
【问题描述】:

可能重复:
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

【问题讨论】:

标签: python python-3.x


【解决方案1】:

您不能将反斜杠作为原始字符串中的最后一个字符,除非它是偶数个反斜杠的一部分;它转义了结束引号。

比较一下:

>>> r'\ '
'\\ '

来自string literal documentation:

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

【讨论】:

  • 哦,我明白了,否则无法在原始字符串中包含'。谢谢。
  • @updogliu:基本上,您只能通过使用双引号 (r"") 或三引号来包含 just 一个 ' 字符(没有反斜杠处理它)原始文字(r'''string''' 或 r"""string""")。
猜你喜欢
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多