最近在整理python相關的知識,使用python對網站進行爬取數據的時候,需要使用到轉義字符,之前對轉義字符理解一直比較模糊,并且在python中還有一個叫原生字符r。所以通過網上調查資料對該內容進行整理,已備不時之需。
字符串轉義
反斜杠,在python中比較特殊,就是它可以用來構成一些特殊字符,比如"\n"表示換行,"\t"表示制表符。
其中的'\n'已轉義為換行符,而'\W'沒有發生轉義,原因是"\W"在字符串轉義中并不對應者特殊字符,沒有特殊含義。
正則轉義
上面僅僅是字符串轉義。在正則表達式中也存在轉義,先稱作"正則轉義"。在正則表達式中"\d"代表數字,"\s"代表空白符。提取"3/8"反斜杠之前的數字
import re
string = '3\8'
m = re.search('(\d+)\\\\', string)
if m is not None:
print (m.group(1) )
n = re.search(r'(\d+)\\', string)
if n is not None:
print (n.group(1) )
正則表達式字符串需要經過兩次轉義,這兩次分別是上面的"字符串轉義"和正則表達式中的轉義
(1)'\\'的過程
先進行“字符串轉義”,前兩個反斜杠和后兩個反斜杠分別被轉義成了一個反斜杠;即“\|\”被轉成了“|\”(“|”為方便看清,請自動忽略)。“字符串轉義”后馬上進行“正則轉義”,“\”被轉義為了“\”,表示該正則式需要匹配一個反斜杠。
(2)r'\'的過程
由于原始字符串中所有字符直接按照字面意思來使用,不轉義特殊字符,故不做“字符串轉義”,直接進入第二步“正則轉義”,在正則轉義中“\”被轉義為了“\”,表示該正則式需要匹配一個反斜杠。
由于正則表達式使用反斜杠來轉義特殊字符,而python自身處理字符串時,反斜杠也是用于轉義字符,這樣就產生一個雙重轉換的問題,