一, 轉譯符 1.python 中的轉譯符 正則表達式中的內容在Python中就是字元串 ' \n ' : \ 轉移符賦予了這個n一個特殊意義,表示一個換行符 ' \ \ n' : \ \ 表示取消了\的轉譯 r 表示取消本字元串的所有轉譯 在正則表達式中: '\\n'-->'\n',但是在pych ...
一, 轉譯符
1.python 中的轉譯符
正則表達式中的內容在Python中就是字元串
' \n ' : \ 轉移符賦予了這個n一個特殊意義,表示一個換行符
' \ \ n' : \ \ 表示取消了\的轉譯
r 表示取消本字元串的所有轉譯
在正則表達式中: '\\n'-->'\n',但是在pycharm中 \n為換行符,則需要轉譯 '\\n',與之匹配
的應為 : '\\\\n'-->'\\n '
在Python中 : r '\\n'-->r '\n'
2. 正則表達式中的轉義
' \( ' 表示匹配小括弧 ; [() + * ? / $ .] 在字元組中一些特殊的字元會現原形.
[ - ] 只寫在字元組的首位的時候表示普通的 減號 / 負號寫在其他位置表示範圍
如果就是想匹配減號 [1\-9]
二, re 模塊
操作匹配的字元串
方法: findall search math 替換 sub subn 切割 compile finditer
1. 查找
findall : re.findall('正則表達式','字元串')
ret = re.findall('\d+','123qwer123df') print(ret) #參數 返回值類型:列表 返回值個數:1 返回值內容:所有匹配的項若沒有
匹配到就是空列表 []
search : re.search('正則表達式','字元串')
ret = re.search('\d+','123qwer123df') print(ret) #參數 返回值類型: 正則匹配結果的對象 返回值個數 : 1 如果匹配上就返回對象,沒匹配上返回None
print(ret.group()) #返回的對象通過group來獲取匹配到的第一個結果
match : re.match('正則表達式','字元串')
ret = re.match('\d+','%^123qwer123df') print(ret) #結果 : None #只從頭開始匹配,相當於在正則表達式前添加一個 ^
2. 替換( replace)
sub
ret = re.sub('\d+','H','123qwedf',1) #把'\d+'替換成'H',指定替換一次(不指定次數全替換) print(ret)
subn
ret = re.subn('\d+','H','123qwedf',1) print(ret) #結果 ('Hqwerdf' , 1) 給出替換結果和替換的次數
3. 切割 (split)
ret = re.split('\d+','123qwerdf') print(ret) #按數字切割
4. compile (提高時間效率)
ret = re.compile('-0\.\d+|-[1-9]\d(\.\d+)?') #可以重覆被利用 ,在多 次使用某一個相同的正則表達式的時候,compile會提高 程式的效率. re = ret.search('qwe-20df-3') print(re.group()) #結果 -20
5. finditer (提高空間效率)
ret = re.finditer('\d','123qwerdf') #拿到一個生成器 for i in ret #拿到正則表達式對象 print(i.group())
6. 分組優先顯示
findall
ret = re.findall('www.(baidu|goole).com,'www.baidu.com') print(ret) #結果 [] findall 會優先顯示分組中的 baidu|goole 匹配內容,要想取消分 組優先,(?:正則表達式)
split
ret = re.split('(\d+)','qwe12d34f') print(ret) #遇到分組會保留 被切掉的內容 #結果 ['qwe','12','d','34','f']
search
re.search('\d+(.\d+)(.\d+)?','1.2.3-2*(60+(-40.35/5))') print(ret.group())#全部輸出/即是print(ret.group(0))
print(ret.group(1))# .2 優先輸出(.\d+) print(ret.group(2))# .3
#如果search中有分組,通過group(n)就能夠拿到group中的匹配的內容
7. 分組命名
(?P<name>正則表達式) 表示給分組起名字 ; (?P=name) 表示使用分組
當匹配的內容和 另一部分必須一樣是可以使用分組命名
前後組名必須一樣才能匹配成功
必須先定義分組才能使用分組
索引方法使用分組
\1 表示使用第一組,匹配到的內容必須和第一個組中的內容完全相同
三, random模塊
隨機: 在某個範圍內取到每一個值的概率是相同的
1. 隨機小數
random.random() 0-1之間的隨機小數
random.uniform(1,9) 任意範圍內的小數
2. 隨機抽取
num = [1,2,3,'qwe',('hehe','haha')]
random.choice(num) 隨機抽取列表中一個值
random.sample(num,2) 隨機抽取列表中2(多個值)值
3. 隨機整數
random.randint(1,8) [1,8] 包含8在內的範圍內隨機取整數
random.randrange(1,8) [1,8) 不包含8在內的範圍內隨機取整數
random.randrange(1,10,2) [1,8) 不包含8在內的範圍內隨機取奇數整數
4. 打亂順序
num = [1,2,3,'qwe',('hehe','haha')]
random.shuffle(num) 在原列表基礎上打亂順序