154

我第一次看到它用于跨多行构建正则表达式作为 的方法参数re.compile(),所以我假设它r代表 RegEx。

例如:

regex = re.compile(
    r'^[A-Z]'
    r'[A-Z0-9-]'
    r'[A-Z]$', re.IGNORECASE
)

r那么在这种情况下是什么意思呢?为什么我们需要它?

4

2 回答 2

223

r意味着该字符串将被视为原始字符串,这意味着所有转义码都将被忽略。

例如:

'\n'将被视为换行符,而r'\n'将被视为.\后面的字符n

当存在'r'or'R'前缀时,反斜杠后面的字符将不加更改地包含在字符串中,并且所有反斜杠都保留在字符串中。例如,字符串文字r"\n"由两个字符组成:反斜杠和小写字母'n'。字符串引号可以用反斜杠转义,但反斜杠保留在字符串中;例如,r"\""是由两个字符组成的有效字符串文字:反斜杠和双引号;r"\" 不是有效的字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义后面的引号字符)。另请注意,后跟换行符的单个反斜杠被解释为这两个字符作为字符串的一部分,而不是作为续行符。

来源:Python 字符串文字

于 2011-01-24T08:49:45.800 回答
40

这意味着逃逸不会被翻译。例如:

r'\n'

是一个带有反斜杠后跟字母的字符串n。(没有r它将是一个换行符。)

b确实代表字节字符串,并在 Python 3 中使用,其中字符串默认为 Unicode。在 Python 2.x 中,默认情况下字符串是字节字符串,您可以使用它u来表示 Unicode。

于 2011-01-24T08:49:08.760 回答