字符串文字前面带有"r"的含义是什么意思?

Nik*_*rez 113 python string syntax literals rawstring

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

例如:

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

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

Seb*_*olm 150

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

举个例子:

'\n'将被视为换行符,同时r'\n'将被视为\后跟的字符n.

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

来源:Python字符串文字

  • 反斜杠 \`\\` 不能是最后一个字符,否则会出现错误 `SyntaxError: EOL while Scanning string Literal`。对于 Python3 来说是 `print (r"Test\new")` (2认同)

Nat*_*ate 28

这意味着逃避不会被翻译.例如:

r'\n'
Run Code Online (Sandbox Code Playgroud)

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

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

  • 你忘记了这一点:http://docs.python.org/reference/lexical_analysis.html#string-literals (2认同)