我第一次看到它用于跨多行构建正则表达式作为 的方法参数re.compile(),所以我假设它r代表 RegEx。
例如:
regex = re.compile(
r'^[A-Z]'
r'[A-Z0-9-]'
r'[A-Z]$', re.IGNORECASE
)
r那么在这种情况下是什么意思呢?为什么我们需要它?
这r意味着该字符串将被视为原始字符串,这意味着所有转义码都将被忽略。
例如:
'\n'将被视为换行符,而r'\n'将被视为.\后面的字符n。
当存在
'r'or'R'前缀时,反斜杠后面的字符将不加更改地包含在字符串中,并且所有反斜杠都保留在字符串中。例如,字符串文字r"\n"由两个字符组成:反斜杠和小写字母'n'。字符串引号可以用反斜杠转义,但反斜杠保留在字符串中;例如,r"\""是由两个字符组成的有效字符串文字:反斜杠和双引号;r"\"不是有效的字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义后面的引号字符)。另请注意,后跟换行符的单个反斜杠被解释为这两个字符作为字符串的一部分,而不是作为续行符。
来源:Python 字符串文字
这意味着逃逸不会被翻译。例如:
r'\n'
是一个带有反斜杠后跟字母的字符串n。(没有r它将是一个换行符。)
b确实代表字节字符串,并在 Python 3 中使用,其中字符串默认为 Unicode。在 Python 2.x 中,默认情况下字符串是字节字符串,您可以使用它u来表示 Unicode。