我第一次看到它用於構建跨越多行的正則表達式作爲re.compile()
的方法參數,所以我認爲r
代表正則表達式。以「r」表示的字符串前面的內容是什麼意思?
例如:
regex = re.compile(
r'^[A-Z]'
r'[A-Z0-9-]'
r'[A-Z]$', re.IGNORECASE
)
那麼,是什麼r
在這種情況下,是什麼意思?我們爲什麼需要它?
我第一次看到它用於構建跨越多行的正則表達式作爲re.compile()
的方法參數,所以我認爲r
代表正則表達式。以「r」表示的字符串前面的內容是什麼意思?
例如:
regex = re.compile(
r'^[A-Z]'
r'[A-Z0-9-]'
r'[A-Z]$', re.IGNORECASE
)
那麼,是什麼r
在這種情況下,是什麼意思?我們爲什麼需要它?
r
表示該字符串被視爲一個原始字符串,這意味着所有的轉義碼都將被忽略。
有關示例:
'\n'
將被視爲一個新行字符,同時將r'\n'
如隨後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 literalr"\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.
這意味着逃生不會被翻譯。例如:
r'\n'
是用反斜槓後面跟有字母n
的字符串。 (沒有r
這將是一個換行符。)
b
確實代表字節字符串,並在Python 3中使用,其中字符串默認情況下是Unicode。在Python 2.x中,字符串默認是字節字符串,您可以使用u
來表示Unicode。
注意,在括號內的多個線串的分裂無關與字符的前綴 - 這僅僅是Python的自動串並置的一個例子,與任何前綴或工作沒有。 – 2011-01-24 09:10:24
前面帶有字母'r'或'u'的字符串表示您需要閱讀文檔。認真。 「玩不同的角色」是你能做的最糟糕的事情。你不會學到太多東西,你學到的東西會變得緩慢而混亂。請閱讀文檔。請。 – 2011-01-24 11:08:38
我試過了。我確實說過,「我很難在文檔中尋找答案,因爲我不知道他們被正式稱爲什麼。」 - 我沒有奢侈的時間去看看。你知道,截止日期和東西。 :P我只搜索了「python字符串前綴」,雖然第一個答案與「詞法分析」的鏈接是第二個結果,但「詞法分析」有點讓我遠離閱讀鏈接頁面,因爲它聽起來像是一個沉重的閱讀。 – 2011-01-26 05:42:22