我试图理解为什么python有这种前所未闻的行为。
如果我正在编写rawdata字符串,那么我更不可能想要转义引号。
这种行为迫使我们编写这个奇怪的代码:
s = r'something' + '\\'
而非's = r'something\'
任何想法为什么python开发人员发现这更合理?
修改
我不是在问为什么会这样。我在问这个设计决定是什么,或者是否有人发现任何好事。
答案 0 :(得分:3)
字符串文字的r
前缀不会禁用转义,更改转义,以便序列\x
(其中x
为任何字符)被“转换”为自己。那么,\'
会发出\'
并且您的字符串无法终止,因为它的末尾没有'
。
答案 1 :(得分:2)
在faq中解释了禁止原始字符串中不成对的结尾反斜杠的决定:
原始字符串旨在简化为想要执行自己的反斜杠转义处理的处理器(主要是正则表达式引擎)创建输入。这样的处理器无论如何都认为无法匹配的尾部反斜杠是错误的,因此原始字符串不允许这样做。作为回报,它们允许您通过使用反斜杠转义它来传递字符串引号字符。当r字符串用于其预期目的时,这些规则很有效。