Python-原始字符串文本
我不明白原始字符串文字是如何工作的。我知道,当使用Python-原始字符串文本,python,rawstring,Python,Rawstring,我不明白原始字符串文字是如何工作的。我知道,当使用r时,它会忽略所有特殊项,就像在执行\n时,它会将其视为\n而不是新行。但后来我试着这样做: x = r'\' 它在扫描字符串文字时说SyntaxError:EOL,而不是'\' 为什么??我理解对了吗? 对此的解释是什么: print r'\\' # gives '\\' print r'\\\' # gives SyntaxError 在原始文字中,反斜杠将转义定义字符串的引号字符 字符串引号可以用反斜杠转义,但反斜杠 留在弦中;例如,r
r
时,它会忽略所有特殊项,就像在执行\n
时,它会将其视为\n而不是新行。但后来我试着这样做:
x = r'\'
它在扫描字符串文字时说SyntaxError:EOL,而不是'\'
为什么??我理解对了吗?
对此的解释是什么:
print r'\\' # gives '\\'
print r'\\\' # gives SyntaxError
在原始文字中,反斜杠将转义定义字符串的引号字符
字符串引号可以用反斜杠转义,但反斜杠
留在弦中;例如,r“\”
是一个有效的字符串文本
由两个字符组成:反斜杠和双引号;r“\”
不是有效的字符串文字(即使是原始字符串也不能以奇数结尾
反斜杠数)。具体来说,原始字符串不能以
单个反斜杠(因为反斜杠将转义以下引号
还请注意,单反斜杠后跟换行符是
将这两个字符解释为字符串的一部分,而不是
行继续
从中,将单引号放入以单引号开头的字符串中的唯一方法是对其进行转义。因此,原始字符串和常规字符串文本都允许在引号字符后面跟一个未转义的反斜杠时对引号字符进行转义。因为必须有一种表示单引号(或双引号)的方法在以单引号(或双引号)开头的字符串文字中加引号,无论使用原始或常规字符串文字,字符串文字'\'
都是不合法的
要获得任何带有奇数个反斜杠的任意字符串,我认为最好的方法是使用常规字符串。这是因为尝试使用r'\\'
会起作用,但它会给您一个带有两个反斜杠而不是一个反斜杠的字符串:
>>> '\\' # 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
这个答案只是为了补充另一个答案