Python-原始字符串文字



我不明白原始字符串文字的工作方式。我知道,当使用r时,它会忽略所有特殊功能,例如在执行n时,它将其视为 n,而不是新线路。但是后来我尝试这样做:

x = r''

它说SyntaxError: EOL while scanning string literal,而不是''

为什么?我正确理解了吗?还有什么解释:

print r'\' # gives '\'
print r'\' # gives SyntaxError

将单个报价放入字符串中的唯一方法是逃脱它。因此,当您有一个未消除的后斜线之后是引用字符时,原始字符串文字和常规字符串文字都将允许逃脱引用字符。由于要求必须有一种以单个(或double)语录开头的字符串文字中的单个(或双重)引号的方法,因此字符串文字''是不合法的,无论您使用原始字符串还是常规字符串文字。<<<<<<<<<<<<<<<<<<<<<</p>

要获得具有奇数字面斜线的任何任意字符串,我相信最好的方法是使用常规字符串文字。这是因为尝试使用r'\'可以工作,但是它会为您提供一个带有 backslashes而不是一个的字符串:

>>> '\' # A single literal backslash.
'\'
>>> len('\')
1
>>> r'\' # Two literal backslashes, 2 is even so this is doable with raw.
'\\'
>>> len(r'\')
2
>>> '\'*3 # Three literal backslashes, only doable with ordinary literals.
'\\\'
>>> len('\'*3)
3

这个答案仅是为了补充另一个答案。

在原始文字中,后斜线将逃脱定义字符串的引用字符。

字符串引号可以用后斜切逃脱,但后斜切 保留在字符串中;例如,r"""是有效的字符串字面 由两个字符组成:反斜线和双引号;r""是 没有一个有效的字符串字面字符(即使是原始的字符串也不能在奇数中结束 后斜线的数量)。具体来说,原始字符串不能在 单个后斜线(因为后斜线会逃脱以下报价 特点)。还请注意,一个后斜线,然后是新线是 将这两个字符解释为字符串的一部分,而不是 线延续。

来自文档

最新更新