为什么在python中我不能使用:
r"c:\"
答案 0 :(得分:3)
当字符串必须包含与其开始的相同引号字符时,转义该字符是唯一可用的解决方法 - 因此设计备选方案是使原始字符串文字无法包含其引号字符,或保留“backlash escapes”约定,即使在字符串文字中,也仅用于引号字符。
由于原始字符串文字被设计用于正则表达式模式的方便表示(不适用于DOS / Windows路径! - ),并且在RE模式中,从不需要尾随反斜杠,因此设计决策很容易(基于实际使用)原始字符串文字的大小写。)
答案 1 :(得分:1)
使用"c:/"
或"c:\\"
。原始字符串文字用于转义转义序列,不包括文字反斜杠,但它们确实以这种方式工作,除非在这种情况下。
答案 2 :(得分:1)
我认为这是一个已知的案例,在这种情况下最好使用“c:\\”。
答案 3 :(得分:1)
答案 4 :(得分:0)
即使使用原始字符串,\"
也会导致"
不被解释为字符串的结尾(尽管反斜杠会进入您的字符串),因此r"foo\"bar"
将是合法的串。这在编写正则表达式时非常方便,但对写入路径不是很好。
这不是什么大问题,因为大多数时候你应该使用os.path
和其他模块来处理你的路径。
答案 5 :(得分:0)
在设计和历史常见问题http://docs.python.org/faq/design.html#why-can-t-raw-strings-r-strings-end-with-a-backslash
中找到原始字符串旨在简化 为处理器创建输入(主要是 想要的正则表达式引擎) 做自己的反斜杠逃脱 处理。这类处理器考虑 一个无与伦比的尾随反斜杠 无论如何都是错误,所以原始字符串 不允许这样做。作为回报,他们允许 你传递字符串引用 通过逃避它的角色 反斜杠。这些规则适用于 r字符串用于它们的预期 目的