为什么python允许在rawdata字符串中转义引号?

时间:2014-05-30 22:55:03

标签: python string escaping

我试图理解为什么python有这种前所未闻的行为。

如果我正在编写rawdata字符串,那么我更不可能想要转义引号。

这种行为迫使我们编写这个奇怪的代码:

s = r'something' + '\\'而非's = r'something\'

任何想法为什么python开发人员发现这更合理?

修改

我不是在问为什么会这样。我在问这个设计决定是什么,或者是否有人发现任何好事。

2 个答案:

答案 0 :(得分:3)

字符串文字的r前缀不会禁用转义,更改转义,以便序列\x(其中x为任何字符)被“转换”为自己。那么,\'会发出\'并且您的字符串无法终止,因为它的末尾没有'

答案 1 :(得分:2)

faq中解释了禁止原始字符串中不成对的结尾反斜杠的决定:

  

原始字符串旨在简化为想要执行自己的反斜杠转义处理的处理器(主要是正则表达式引擎)创建输入。这样的处理器无论如何都认为无法匹配的尾部反斜杠是错误的,因此原始字符串不允许这样做。作为回报,它们允许您通过使用反斜杠转义它来传递字符串引号字符。当r字符串用于其预期目的时,这些规则很有效。