What does preceding a string literal with “r” mean? [duplicate]

Deadly 提交于 2019-11-26 02:06:49

问题


This question already has an answer here:

  • What exactly do “u” and “r” string flags do, and what are raw string literals? 7 answers

I first saw it used in building regular expressions across multiple lines as a method argument to re.compile(), so I assumed that r stands for RegEx.

For example:

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

So what does r mean in this case? Why do we need it?


回答1:


The r means that the string is to be treated as a raw string, which means all escape codes will be ignored.

For an example:

'\n' will be treated as a newline character, while r'\n' will be treated as the characters \ followed by n.

When an 'r' or 'R' prefix is present, a character following a backslash is included in the string without change, and all backslashes are left in the string. For example, the string literal r"\n" consists of two characters: a backslash and a lowercase 'n'. String quotes can be escaped with a backslash, but the backslash remains in the string; for example, r"\"" is a valid string literal consisting of two characters: a backslash and a double quote; r"\" is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character). Note also that a single backslash followed by a newline is interpreted as those two characters as part of the string, not as a line continuation.

Source: Python string literals




回答2:


It means that escapes won’t be translated. For example:

r'\n'

is a string with a backslash followed by the letter n. (Without the r it would be a newline.)

b does stand for byte-string and is used in Python 3, where strings are Unicode by default. In Python 2.x strings were byte-strings by default and you’d use u to indicate Unicode.



来源:https://stackoverflow.com/questions/4780088/what-does-preceding-a-string-literal-with-r-mean

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!