<分区>
str = r'c:\path\to\folder\' # my comment
- 集成开发环境:Eclipse
- Python2.6
当字符串中的最后一个字符是反斜杠时,它似乎会转义最后一个单引号并将我的评论视为字符串的一部分。但是原始字符串应该忽略所有转义字符,对吗?有什么问题吗?谢谢。
<分区>
str = r'c:\path\to\folder\' # my comment
当字符串中的最后一个字符是反斜杠时,它似乎会转义最后一个单引号并将我的评论视为字符串的一部分。但是原始字符串应该忽略所有转义字符,对吗?有什么问题吗?谢谢。
最佳答案
原始字符串文字不会将反斜杠视为启动转义序列除非紧随其后的字符是分隔文字的引号字符,在这种情况下反斜杠会 逃避它。
设计动机是原始字符串文字的存在只是为了方便输入正则表达式模式——也就是说,没有此类文字存在其他设计目标。 RE 模式永远不需要以反斜杠结尾,但它们可能需要包含各种引号字符,规则由此而来。
许多人确实尝试使用原始字符串文字来使他们能够以他们习惯的方式(使用反斜杠)输入 Windows 路径——但是正如您所注意到的,当您确实需要以一个反斜杠。通常,最简单的解决方案是使用 forward 斜杠,Microsoft 的 C 运行时和所有版本的 Python 都支持在路径中完全等效:
s = 'c:/path/to/folder/'
(旁注:不要使用您自己的标识符隐藏内置名称,如 str
– 这是一种可怕的做法,没有任何好处,除非您进入养成避免这种可怕做法的习惯,有一天您会发现自己遇到了一个难以调试的问题,此时您的代码的某些部分会破坏内置名称,而另一部分需要使用内置名称真正意义上的)。
关于Python 原始文字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3517802/