在“r”之前的string字面意味着什么?

我第一次看到它用于在多行中构build正则expression式作为re.compile()的方法参数,所以我假定r代表正则expression式。

例如:

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

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

r表示该string被视为一个原始string,这意味着所有的转义代码将被忽略。

举个例子:

'\n'将被视为换行符,而r'\n'将被视为字符\后跟n

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

来源: Pythonstring文字

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

 r'\n' 

是带反斜杠的string,后跟字母n 。 (没有这将是一个换行符。)

b代表字节串,在Python 3中使用,默认情况下string是Unicode。 在Python 2.xstring默认情况下是字节string,你会用u来表示Unicode。