[英]Python raw literal string
str = r'c:\path\to\folder\' # my comment
当字符串中的最后一个字符是反斜杠时,似乎它将转义最后一个单引号并将我的注释视为字符串的一部分。 但是原始字符串应该忽略所有转义字符,对吗? 有什么事吗 谢谢。
原始字符串文字不会将反斜杠视为启动转义序列, 除非紧跟在后的字符是界定文字的引号字符时,在这种情况下,反斜杠确实会将其转义。
设计的动机是,原始字符串文字确实仅是为了方便输入正则表达式模式而存在–就是说,此类文字不存在其他设计目标。 RE模式永远不需要以反斜杠结尾,但是规则可能需要包括所有引号字符。
许多人确实尝试使用原始字符串文字来使他们能够以习惯的方式(带有反斜杠)输入Windows路径-但是,您已经注意到,当您确实需要以反斜杠结尾的路径时,这种用法会分解。 通常,最简单的解决方案是使用正斜杠,Microsoft的C运行时和所有版本的Python在路径中都完全等效:
s = 'c:/path/to/folder/'
(旁注: 不要用自己的标识符遮盖诸如str
类的内置名称-这是一种可怕的做法,没有任何弊端,除非您习惯于避免有一天避免采取这种可怕的做法,否则您会发现自己很讨厌-调试问题,当您的代码的某些部分践踏了内置名称,而另一部分需要使用其真实含义时使用内置名称)。
恕我直言,这是Python中的不一致之处,但在文档中对此进行了描述。 转到第二段:
http://docs.python.org/reference/lexical_analysis.html#string-literals
r“ \\”不是有效的字符串文字(即使原始字符串也不能以奇数个反斜杠结尾)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.