Python 原始文字字符串

标签 python string rawstring

<分区>

str = r'c:\path\to\folder\'   # my comment
  • 集成开发环境:Eclipse
  • Python2.6

当字符串中的最后一个字符是反斜杠时,它似乎会转义最后一个单引号并将我的评论视为字符串的一部分。但是原始字符串应该忽略所有转义字符,对吗?有什么问题吗?谢谢。

最佳答案

原始字符串文字不会将反斜杠视为启动转义序列除非紧随其后的字符是分隔文字的引号字符,在这种情况下反斜杠 逃避它。

设计动机是原始字符串文字的存在只是为了方便输入正则表达式模式——也就是说,没有此类文字存在其他设计目标。 RE 模式永远不需要以反斜杠结尾,但它们可能需要包含各种引号字符,规则由此而来。

许多人确实尝试使用原始字符串文字来使他们能够以他们习惯的方式(使用反斜杠)输入 Windows 路径——但是正如您所注意到的,当您确实需要以一个反斜杠。通常,最简单的解决方案是使用 forward 斜杠,Microsoft 的 C 运行时和所有版本的 Python 都支持在路径中完全等效:

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

(旁注:不要使用您自己的标识符隐藏内置名称,如 str – 这是一种可怕的做法,没有任何好处,除非您进入养成避免这种可怕做法的习惯,有一天您会发现自己遇到了一个难以调试的问题,此时您的代码的某些部分会破坏内置名称,而另一部分需要使用内置名称真正意义上的)。

关于Python 原始文字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3517802/

相关文章:

python - Discord Python Bot 在使用后台任务时破坏我的命令

c# - 无法从 'string' 转换为 'system.collections.generic.list string'

python - 为什么我不能用反斜杠结束原始字符串?

c++ - 将 int 转换为 char* 时出现奇怪的输出

python - 如何在字符串文字中放置实际的反斜杠(不将其用于转义序列)?

c++ - 为什么原始字符串文字的分隔符必须小于 16 个字符?

python - django 管理面板对表单集中的每个表单进行编号

python - 如何为 selectfield(wtforms) Flask 配置 html?

Python - 列表中每个项目后的换行符

java - 用不同的字符分割字符串