网上提及 python 的原生字符串( raw string)。更多的是对比其与普通字符串的优势。却鲜有提及其使用限制。
引号的限制
如果我的原生字符串是由 '
包裹,那么如何在字符串中表示 '
呢?
答案是:包裹原生字符串的引号无法在原生字符串中单独出现。
我们可以用 r'ab"cd'
表示 'ab"cd'
,但是不能用 r'a\'b"c'
表示 'a\'b"c'
在这里, r'a\'b"c'
表示的是 'a\\\'b"c'
。原生字符串中的单引号确实因为那个反斜线保留了下来,但同时用来转义的反斜线也会被保留。也就是说,包裹原生字符串的引号无法在该字符串中单独出现,它必须伴随着一个反斜线同时出现。
反斜线的限制
从上面可以看出,python 原生字符串并非什么都不转义,它会将 r'\''
转义成 "\\'"
。这也就意味着,如果你想用原生字符串表达 '\\'
是无法实现的。为什么呢?
r'\'
在 python 中是不合法的,因为其最后的 \'
部分会被当成字符串内容的一部分而被转义,于是这个表达式就没有了结束引号。
又因