2010-08-19 73 views
11
str = r'c:\path\to\folder\' # my comment 

IDE:Eclipse中,python2.6的Python原始文本字符串

当字符串中的最后一个字符是反斜杠,似乎将难逃最后的单引号和对待我的评论作为字符串的一部分。但原始字符串假设忽略所有转义字符,对吧?什么可能是错的?谢谢。

回答

33

原始字符串字面不要把反斜杠作为启动转义序列除了时立即跟随字符是引号字符被界定文字,在这种情况下,反斜杠确实逃脱它。

设计动机是,原始字符串文字的存在只是为了方便进入正则表达式模式 - 即所有,其他设计目标存在于这些文字中。而RE模式永远不需要以反斜杠结束,但它们可能需要包含各种引用字符,从哪个规则开始。

许多人尝试使用原始字符串文字来使他们按照习惯的方式(使用反斜杠)输入Windows路径 - 但是正如您注意到的,当您需要路径以反斜杠结尾。通常情况下,最简单的解决方法是使用向前斜线,微软的C运行时和所有版本的Python的支持,完全等值路径:

s = 'c:/path/to/folder/' 

(边注:阴影内建的名字,像str,带有你自己的标识符 - 这是一种可怕的做法,没有任何好处,除非你有一天避免了这种可怕的做法,否则你会发现一个令人讨厌的调试问题,当你的某个部分代码践踏内置名称,另一部分需要使用内置名称的真实含义)。

+3

(甚至一个原始字符串不能在 奇数反斜线结束)+ 1在Python中正确解释Windows路径使用'/' – 2013-01-18 00:58:49

+0

稍有不同的用法,但类似的问题:一个b64encode()字符对象如何在最后使用文字反斜杠?如果我尝试b'somestring \'我得到一个错误,如果我b'somestring \\'它编码两个反斜杠。 – Jerod 2016-10-14 18:38:25