在“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。