表達式是什么?所有人都知道。“1+1=2”,這個“1+1”就是最典型的表達式。
創新互聯是網站建設技術企業,為成都企業提供專業的網站制作、成都網站設計,網站設計,網站制作,網站改版等技術服務。擁有10多年豐富建站經驗和眾多成功案例,為您定制適合企業的網站。10多年品質,值得信賴!
用來指定數據做哪種運算的符號是“運算符”,進行運算的數據稱為“操作數”。例如:“2+3"中的“+”是運算符,“2”和“3”是操作數。
運算符根據操作數的個數分為單目運算符和雙目運算符:
單目運算符,只有一個操作數,例如“-100”中 的“-”,單目運算符位于操作數的前面;
雙目運算符,具有二哥操作數的運算符,例如“100-30”中的“-”,雙目運算符位于二個操作數之間。
1、input命令
print命令用于輸出數據,而input命令與print命令相反,它是讓用戶由“標準輸入”設備輸入數據,如果沒有特別設置,標準輸入設備是指鍵盤。input命令是非常常用的命令,比如,教師若要用電腦計算成績,則首先要從鍵盤輸入學生成績。語法如下:
? ? ? ? 變量 = input([提示字符串])
? ? ? ? 用戶輸入的數據存儲在指定的變量中。
? ? ? ? “提示字符串”表示輸出一段提示信息,用來告訴用戶如何輸入。輸入數據時,當用戶按下Enter鍵后被認為是輸入結束,input命令會把用戶輸入的數據存入變量中。
例如,讓用戶輸入數學成績并輸出程序:
2、運算符
python支持以下幾種運算符(常用):
算術運算符:用于執行普通數學運算的運算符
例如:假設變量a = 10,變量b = 20
關系運算符:用于二個表達式之間的比較,若比較結果為真,返回True;否則為False
?? 例如:假設變量a=10,變量b=20
賦值運算符:先給變量賦值,在運算的運算符
???例如:假設變量a=10,變量b=20
邏輯運算符:用于邏輯運算的運算符
???例如:假設變量a=10,變量b=20
按位運算符:把數字看成二進制來計算的
? ? 例如:假設變量a = 60(換成二進制為111100), 變量b = 13(換成二進制為1101)
運算符優先級:自上而下,依次升高
為了重復利用同一個正則對象,需要多次使用這個正則表達式的話,使用re.compile()保存這個正則對象以便復用,可以讓程序更加高效。
1)re.compile
參數:
re.I 忽略大小寫
re.L 表示特殊字符集 w, W, b, B, s, S 依賴于當前環境
re.M 多行模式
re.S 即為' . '并且包括換行符在內的任意字符(' . '不包括換行符)
re.U 表示特殊字符集 w, W, b, B, d, D, s, S 依賴于 Unicode 字符屬性數據庫
re.X 為了增加可讀性,忽略空格和' # '后面的注釋
案例:
在上面,當匹配成功時返回一個 Match 對象,其中:
2)re.findall
在字符串中找到正則表達式所匹配的所有子串,并返回一個列表,如果有多個匹配模式,則返回元組列表,如果沒有找到匹配的,則返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
參數:
案例:
3)re.finditer
和 findall 類似,在字符串中找到正則表達式所匹配的所有子串,并把它們作為一個迭代器返回。
案例:
4)re.split
split 方法按照能夠匹配的子串將字符串分割后返回列表。
案例:
從上篇Python re模塊 正則表達式到這篇,我們已經把常用的正則匹配的方法學會了。
關注我,堅持每日積累一個技巧, 長期堅持 ,我們將會不斷進步。
#python# #程序員# #請回答,你的年度知識點# #教育聽我說# #計算機#
01 Re概覽
Re模塊是python的內置模塊,提供了正則表達式在python中的所有用法,默認安裝位置在python根目錄下的Lib文件夾(如 ..\Python\Python37\Lib)。主要提供了3大類字符串操作方法:
字符查找/匹配
字符替換
字符分割
由于是面向字符串類型的模塊,就不得不提到字符串編碼類型。re模塊中,模式串和搜索串既可以是 Unicode 字符串 (常用str類型) ,也可以是8位字節串 (bytes,2位16進制數字,例如\xe5) , 但要求二者必須是同類型字符串。
02 字符串查找/匹配
預編譯:compile
在介紹查找和匹配函數前,首先需要知道re的compile函數,該函數可以將一個模式串編譯成正則表達式類型,以便后續快速匹配和復用
import?re pattern?=?re.compile(r'[a-z]{2,5}') type(pattern)?#re.Pattern
此例創建了一個正則表達式式對象 (re.pattern) ,命名為pattern,用于匹配2-5位小寫字母的模式串。后續在使用其他正則表達式函數時,即可使用pattern進行方法調用。
匹配:match
match函數用于從文本串的起始位置開始匹配,若匹配成功,則返回相應的匹配對象,此時可調用group()方法返回匹配結果,也可用span()方法返回匹配起止下標區間;否則返回None
import?re pattern?=?re.compile(r'[a-z]{2,5}') text1?=?'this?is?a?re?test' res?=?pattern.match(text1) print(res)?# if?res: ?print(res.group())?#this ?print(res.span())?#(0,?4) text2?=?'是的,?this?is?a?re?test' print(pattern.match(text2))#None
match函數還有一個變形函數fullmatch,當且僅當模式串與文本串剛好全部匹配時,返回一個匹配對象,否則返回None
搜索:search
match只提供了從文本串起始位置匹配的結果,如果想從任意位置匹配,則可調用search方法,與match方法類似,當任意位置匹配成功,則立即返回一個匹配對象,也可調用span()方法獲取起止區間、調用group方法獲得匹配文本串
import?re pattern?=?re.compile(r'\s[a-z]{2}') text1?=?'this?is?a?re?test' res?=?pattern.search(text1) print(res)?# if?res: ?print(res.group())?#is ?print(res.span())?#(4,?7) pattern2?=?re.compile(r'\s[a-z]{5}') text2?=?'是的,this?is?a?re?test' print(pattern2.search(text2))#None
match和search均用于匹配單個結果,唯一區別在于前者是從起始位置開始匹配,而后者從任意位置匹配,匹配成功則返回一個match對象。
全搜索:findall/finditer
幾乎是最常用的正則表達式函數,用于尋找所有匹配的結果,例如在爬蟲信息提取中,可非常方便地提取所有匹配字段
import?re pattern?=?re.compile(r'\s[a-z]{2,5}') text1?=?'this?is?a?re?test' res?=?pattern.findall(text1) print(res)?#['?is',?'?re',?'?test']
findall返回的是一個列表對象類型,當無匹配對象時,返回一個空列表。為了避免因同時返回大量匹配結果占用過多內存,可以調用finditer函數返回一個迭代器類型,其中每個迭代元素是一個match對象,可繼續調用group和span方法獲取相應結果
import?re pattern?=?re.compile(r'\s[a-z]{2,5}') text1?=?'this?is?a?re?test' res?=?pattern.finditer(text1) for?r?in?res: ?print(r.group()) """ ?is ?re ?test """
當匹配模式串較為簡單或者僅需單詞調用時,上述所有方法也可直接調用re類函數,而無需事先編譯。此時各方法的第一個參數為模式串。
import?re pattern?=?re.compile(r'\d{2,5}') text?=?'this?is?re?test' re.findall('[a-z]+',?text)?#['this',?'is',?'re',?'test'] 03 字符串替換/分割
替換:sub/subn
當需要對文本串進行條件替換時,可調用re.sub實現 (當然也可先編譯后再用調用實例方法) ,相應參數分別為模式串、替換格式、文本串,還可以通過增加缺省參數限定替換次數和匹配模式。通過在模式串進行分組,可實現字符串的格式化替換(類似字符串的format方法),以實現特定任務。
import?re text?=?'today?is?2020-03-05' print(re.sub('-',?'',?text))?#'today?is?20200305' print(re.sub('-',?'',?text,?1))?#'today?is?202003-05' print(re.sub('(\d{4})-(\d{2})-(\d{2})',?r'\2/\3/\1',?text))?#'today?is?03/05/2020'
re.sub的一個變形方法是re.subn,區別是返回一個2元素的元組,其中第一個元素為替換結果,第二個為替換次數
import?re text?=?'today?is?2020-03-05' print(re.subn('-',?'',?text))?#('today?is?20200305',?2)
分割:split
還可以調用正則表達式實現字符串的特定分割,相當于.split()方法的一個加強版,實現特定模式的分割,返回一個切割后的結果列表
import?re text?=?'today?is?a?re?test,?what?do?you?mind?' print(re.split(',',?text))?#['today?is?a?re?test',?'?what?do?you?mind?'] 04 總結
python中的re模塊提供了正則表達式的常用方法,每種方法都包括類方法調用(如re.match)或模式串的實例調用(pattern.match)2種形式
常用的匹配函數:match/fullmatch
常用的搜索函數:search/findall/finditer
常用的替換函數:sub/subn
常用的切割函數:split
還有其他很多方法,但不是很常用,具體可參考官方文檔
另外,python還有第三方正則表達式庫regex可供選擇
到此這篇關于一文秒懂python正則表達式常用函數的文章就介紹到這了,希望大家以后多多支持!
網頁名稱:包含python表達式函數的詞條
分享路徑:http://vcdvsql.cn/article2/dopegic.html
成都網站建設公司_創新互聯,為您提供外貿建站、小程序開發、標簽優化、品牌網站制作、靜態網站、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯