gpt4 book ai didi

python - 为什么 Python 的原始字符串文字不能以单个反斜杠结尾?

转载 作者:IT老高 更新时间:2023-10-28 12:24:54 29 4
gpt4 key购买 nike

从技术上讲,任何奇数个反斜杠,如 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com