淺析Python字符串中的r和u的區(qū)別
Python中字符串前面我們經(jīng)??吹郊觬(R)或u/(U)的前綴,而這兩個符號是什么意思呢?
1.r(R)
r意為raw,表示不包含轉(zhuǎn)義字符的原生字符串。常見的轉(zhuǎn)義字符包括下列幾種:
| 轉(zhuǎn)義字符 | 描述 |
|---|---|
| \(在行尾時) | 續(xù)航符 |
| \\ | 反斜杠符號 |
| ' | 單引號(字符串需要為""形式) |
| " | 雙引號(需要字符串用需要為''形式) |
| \b | 退格(Backspace) |
| \000 | 空 |
| \n | 換行 |
| \v | 縱向制表符 |
| \t | 橫向制表符 |
下面是幾個轉(zhuǎn)義字符的演示:
print("Hello\
,world")
# Hello,world
print("Hello\\,world")
# Hello\,world
print("Hello',world")
# Hello',world
print('Hello",world')
# Hello",world
print("Hello\b,world")
# Hell,world
print("Hello\000,world")
#Hello,world
print("Hello\n,world")
# Hello
# ,world
print("Hello\v,world")
# Hello
# ,world
print("Hello\t,world")
# Hello ,world
print("Hello\020,world")
r前綴的作用就是告訴解釋器,我這個字符串不包含轉(zhuǎn)義字符,比如字符串中如果包含'\n',則不將其視為換行符,而視為一個'\'字符和'n'字符來處理。如下面所示:
print("Hello,\nworld")
# Hello,
# world
print("Hello,\nworld")
# Hello,\nworld
r前綴最常見的用途是正則表達式,因為正則匹配的模式經(jīng)常包含各種反斜杠等字符,我們不希望它被解析為轉(zhuǎn)移字符,因此需要加上'r'。
如
import re str_pat= re.compile(r'\d+/\d+/\d+') text = 'Today is 12/10/2021, yesterday is 12/11/2021' res = str_pat.findall(text) print(res) ['12/10/2021', '12/11/2021']
2.u(U)
u(U)前綴表示字符串的編碼方式為unicode。不僅包含中文在內(nèi)的任意字符串都可以采用unicode編碼。一般英文字符串在任何編碼的情況下都能正常解析,所以一般不用顯式添加u。然而中文最好要說明其編碼,否則編碼轉(zhuǎn)換時就會出現(xiàn)亂碼(比如本來用gbk編碼但拿unicode來解碼)。解決編碼問題一勞永逸的方法是在.py的文件頭添加如下內(nèi)容:
# coding: utf-8
補充
字符串前加b
例: response = b'<h1>Hello World!</h1>'???? # b' ' 表示這是一個 bytes 對象
作用:
b" "前綴表示:后面字符串是bytes 類型。
用處:
網(wǎng)絡(luò)編程中,服務(wù)器和瀏覽器只認bytes 類型數(shù)據(jù)。
如:send 函數(shù)的參數(shù)和 recv 函數(shù)的返回值都是 bytes 類型
附:
在 Python3 中,bytes 和 str 的互相轉(zhuǎn)換方式是
str.encode('utf-8')
bytes.decode('utf-8')
字符串前加f
import time t0 = time.time() time.sleep(1) name = 'processing'
# 以 f開頭表示在字符串內(nèi)支持大括號內(nèi)的python 表達式
print(f'{name} done in {time.time() - t0:.2f} s')
輸出:
processing done in 1.00 s
參考文獻
[2] Martelli A, Ravenscroft A, Ascher D. Python cookbook[M]. " O'Reilly Media, Inc.", 2005.
到此這篇關(guān)于淺析Python字符串中的r和u的區(qū)別的文章就介紹到這了,更多相關(guān)Python字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python基于plotly實現(xiàn)畫餅狀圖代碼實例
這篇文章主要介紹了python基于plotly實現(xiàn)畫餅狀圖代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12
詳解python selenium 爬取網(wǎng)易云音樂歌單名
Python基于callable函數(shù)檢測對象是否可被調(diào)用

