Python - 原始字符串文字
Python - Raw String Literals
我不明白原始字符串文字是如何工作的。我知道在使用 r
时它会忽略所有特殊符号,就像在使用 \n
时它会将其视为 \n 而不是新行。但后来我尝试这样做:
x = r'\'
它说 SyntaxError: EOL while scanning string literal
而不是 '\'
为什么?我理解正确吗?
以及对此的解释是什么:
print r'\' # gives '\'
print r'\\' # gives SyntaxError
在原始文字中,反斜杠将转义定义字符串的引号字符。
String quotes can be escaped with a backslash, but the backslash
remains in the string; for example, r"\""
is a valid string literal
consisting of two characters: a backslash and a double quote; r"\"
is
not a valid string literal (even a raw string cannot end in an odd
number of backslashes). Specifically, a raw string cannot end in a
single backslash (since the backslash would escape the following quote
character). Note also that a single backslash followed by a newline is
interpreted as those two characters as part of the string, not as a
line continuation.
来自the docs
将单引号放入以单引号开头的字符串中的唯一方法是将其转义。因此,当您有未转义的反斜杠后跟引号字符时,原始字符串文字和常规字符串文字都将允许转义引号字符。由于要求必须有一种方法在以单引号(或双引号)开头的字符串文字中表达单引号(或双引号),字符串文字 '\'
是不合法的,无论您使用原始字符串还是常规字符串字符串文字。
要获得任何带有奇数个反斜杠的任意字符串,我认为最好的方法是使用常规字符串文字。这是因为尝试使用 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
这个答案只是为了补充另一个答案。
我不明白原始字符串文字是如何工作的。我知道在使用 r
时它会忽略所有特殊符号,就像在使用 \n
时它会将其视为 \n 而不是新行。但后来我尝试这样做:
x = r'\'
它说 SyntaxError: EOL while scanning string literal
而不是 '\'
为什么?我理解正确吗? 以及对此的解释是什么:
print r'\' # gives '\'
print r'\\' # gives SyntaxError
在原始文字中,反斜杠将转义定义字符串的引号字符。
String quotes can be escaped with a backslash, but the backslash remains in the string; for example,
r"\""
is a valid string literal consisting of two characters: a backslash and a double quote;r"\"
is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character). Note also that a single backslash followed by a newline is interpreted as those two characters as part of the string, not as a line continuation.
来自the docs
将单引号放入以单引号开头的字符串中的唯一方法是将其转义。因此,当您有未转义的反斜杠后跟引号字符时,原始字符串文字和常规字符串文字都将允许转义引号字符。由于要求必须有一种方法在以单引号(或双引号)开头的字符串文字中表达单引号(或双引号),字符串文字 '\'
是不合法的,无论您使用原始字符串还是常规字符串字符串文字。
要获得任何带有奇数个反斜杠的任意字符串,我认为最好的方法是使用常规字符串文字。这是因为尝试使用 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
这个答案只是为了补充另一个答案。