- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
从技术上讲,任何奇数个反斜杠,如 the documentation 中所述.
>>> r'\'
File "<stdin>", line 1
r'\'
^
SyntaxError: EOL while scanning string literal
>>> r'\\'
'\\\\'
>>> r'\\\'
File "<stdin>", line 1
r'\\\'
^
SyntaxError: EOL while scanning string literal
似乎解析器可以将原始字符串中的反斜杠视为常规字符(这不就是原始字符串的全部内容吗?),但我可能遗漏了一些明显的东西。
最佳答案
关于 python 的原始字符串的全部误解是大多数人认为反斜杠(在原始字符串中)只是一个常规字符。它不是。理解的关键是这个python的教程序列:
When an 'r' or 'R' prefix is present, a character following a backslash is included in the string without change, and all backslashes are left in the string
所以反斜杠后面的任何字符都是原始字符串的一部分。一旦解析器输入一个原始字符串(非 Unicode 字符串)并遇到一个反斜杠,它就知道有 2 个字符(一个反斜杠和一个字符跟随它)。
这边:
r'abc\d' comprises a, b, c, \, d
r'abc\'d' comprises a, b, c, \, ', d
r'abc\'' comprises a, b, c, \, '
和:
r'abc\' comprises a, b, c, \, ' but there is no terminating quote now.
最后一个案例表明,根据文档,现在解析器找不到结束引号,因为您在上面看到的最后一个引号是字符串的一部分,即反斜杠不能在此处最后,因为它会“吞噬”字符串结束字符。
关于python - 为什么 Python 的原始字符串文字不能以单个反斜杠结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647769/
我是一名优秀的程序员,十分优秀!