Python中字元串前面我們經常看到加r(R)或u/(U)的字首,而這兩個符号是什麼意思呢?r意為raw,表示不包含轉義字元的原生字元串。r字首最常見的用途是正規表達式,因為正則比對的模式經常包含各種反斜杠等字元,我們不希望它被解析為轉移字元,是以需要加上'r'。u(U)字首表示字元串的編碼方式為unicode。
Python中字元串前面我們經常看到加r(R)或u/(U)的字首,而這兩個符号是什麼意思呢?
r意為raw,表示不包含轉義字元的原生字元串。常見的轉義字元包括下列幾種:
轉義字元
描述
\(在行尾時)
續航符
\\
反斜杠符号
'
單引号(字元串需要為""形式)
"
雙引号(需要字元串用需要為''形式)
\b
倒退(Backspace)
\000
空
\n
換行
\v
縱向制表符
\t
橫向制表符
下面是幾個轉義字元的示範:
r字首的作用就是告訴解釋器,我這個字元串不包含轉義字元,比如字元串中如果包含'\n',則不将其視為換行符,而視為一個'\'字元和'n'字元來處理。如下面所示:
r字首最常見的用途是正規表達式,因為正則比對的模式經常包含各種反斜杠等字元,我們不希望它被解析為轉移字元,是以需要加上'r'。
如
u(U)字首表示字元串的編碼方式為unicode。不僅包含中文在内的任意字元串都可以采用unicode編碼。一般英文字元串在任何編碼的情況下都能正常解析,是以一般不用顯式添加u。然而中文最好要說明其編碼,否則編碼轉換時就會出現亂碼(比如本來用gbk編碼但拿unicode來解碼)。解決編碼問題一勞永逸的方法是在<code>.py</code>的檔案頭添加如下内容:
[1] https://www.python.org/
[2] Martelli A, Ravenscroft A, Ascher D. Python cookbook[M]. " O'Reilly Media, Inc.", 2005.
數學是符号的藝術,音樂是上界的語言。