re模組和分組 random模組

2022-03-16 22:43:01 字數 4096 閱讀 5985

一,re模組

1.   findall     search      match     (查詢,匹配)

findall方法括號內引數 正則,字串, 返回值是乙個列表,匹配不到返回 空列表

如   ===>    ret = re.findall('\s+','kjewhfqho254qfewgf')               print(ret)

search 方法括號內引數 正則,字串, 匹配到返回值是物件空間,,沒有匹配到則返回none,  也經常用到if 語句中,如if ret1:print(ret1.group()) # 返回的物件通過group來獲                             取匹配到的第乙個結果

如   ===>    ret1 = re.search('\d','dg;ijwpggg.weqge') print(ret1)

match與search方法相類似,區別在於相當於在正則的開頭加了了^ ,用來判斷以什麼開始的,不建議用

如   ===>    ret2 = re.match('\d+','afw321653afdwqef')              print(ret2.group()) 

2.     sub    subn  (替換)              split   (切割)

sub方法,括號內 正則,替換的新值,字串,替換次數(多少不會報錯),返回值是字串型別

subn 跟sub一樣,除了會返回替換後的結果,還會返回替換的次數,是元組型別

如   ===>   ret3 = re.sub('\d+','h','53463434dweqf53we1gfw5f')       print(ret3) 

split切割方法括號內 正則,字串 返回值是個列表,     注意:   處理資料時,如果被切割的也顯示出來,那就給正則那裡加個括號(),這樣就能顯示出來

如     ===>   ret4 = re.split('\d+','wegwerwg2564gfwe3g156') print(ret4) 

3        ret5 = re.compile('-0\.\d+|-[1-9]+(\.\d+)?') # 多次用到這個正規表示式時,那麼就用compile 命令節省時間效率

res = ret5.search('fgqgioh521-4551312qgwfgqwfge')# 只用傳字串就行

print(res.group())

ret0 = re.finditer('\d+','kfhqhegf564646.weg545-we5g4') #注意這個命令會幫我們拿到符合正則的字串的迭代器,節省空間

for r in ret0:

print(r.group())

4,   findall   會優先顯示分組中的內容,要想取得分組優先,   (?:正規表示式) 正則前面加?:

split 遇到分組 會保留分組內被切掉的內容

search 如果search中有分組的話,通過group(n)就能夠拿到group中的匹配的內容

5,  分組的命名

啟名字(?p正規表示式) 表示給分組起名字

如:   ====>        

ret = re.search('<(?p\w+)>\w+','') print(ret.group('name'))

通過索引使用分組

(?p=name)表示使用這個分組,這裡匹配到的內容應該和分組中的內容完全相同

如:      ====>     ret = re.search('\d+(.\d+)(.\d+)(.\d+)?','1.2.3.4-2*(60+(-40.35/5)-(-4*3))')

print(ret.group())     print(ret.group(1))        print(ret.group(2))

二,(1)random模組    隨機演算法: 在某個範圍內,取到每乙個值的概率是相等的

無限迴圈小數計算機可以表達,無限不迴圈小數,計算機表達不了,π這個值是也不能取完,它在單獨的math模組裡

import  random

隨機小數

random.random()        ===>  0-1之內的隨機小數

random.uniform(1,5)    ===>  1-5之內的隨機小數

隨機整數

random.randint(1,2)    這是閉區間,顧頭顧尾

random,randrange(1,2)   這是顧頭不顧尾             random.randrange(1,6,2)  按步長取值,顧頭不顧尾   

隨機抽取   能操作字串,列表,元組,字典不可操作

random.choice(1)       ==>  隨機抽取乙個值

random.sample(lis,2)   ===>  隨機抽取多個值

打亂順序   (只能操作列表)

random.shuffle(lis)

(2)    

隨機生成4位數字驗證碼:(也可指定多位數字驗證碼)

def ran_code(n = 4):

code = ''

for i in range(n):

num = random.randint(0,9)

code = code + str(num)

return code

ret = ran_code(6)   

(3)  隨機生成4包含數字和大小寫字母(也可指定多位數字驗證碼)

def ran_code(n = 4,a = ture):

code = ''

for i in range(n):

ran_num = str(random.randint(0,9))

if a:

ran_alph = chr(random.randint(97,122))

ran_alph_upper = chr(random.randint(65,90))

ran_num = random.choice(ran_num,ran_alph,ran_alph_upper

)code = code + ran_num

return code

ret = ran_code(6,a = false)

print(ret)

轉譯符,re模組,random模組

一,轉譯符 1.python 中的轉譯符 正規表示式中的內容在python中就是字串 n 轉移符賦予了這個n乙個特殊意義,表示乙個換行符 n 表示取消了 的轉譯 r 表示取消本字串的所有轉譯 在正規表示式中 n n 但是在pycharm中 n為換行符,則需要轉譯 n 與之匹配 的應為 n n 在py...

getpass模組和random模組

用於對密碼的隱藏輸入案例 import getpass passwd getpass.getpass please input your password random 方法返回隨機生成的乙個實數,它在 0,1 範圍內 語法 import random random.random 注意 random...

re 模組 分組特別說明

from django.test import testcase importre create your tests here.ret re.findall r d d d 1 2 60 40.35 5 4 3 print ret 1 2 60 40.35 5 4 3 ret re.findall...