⑴ 一文秒懂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的特點有哪些
Python語言的特點:
①Python語法優雅,程序編碼簡單易讀。
②Python易上手,通過簡單的操作就能讓你寫的程序運行。Python非常適合用來做原型開發或其他專門的編碼任務,同時又不用為了維護而煩惱。
③Python擁有大量的標准庫來支持一般的編碼任務,例如連接網路伺服器、用正則表達式搜索文字、讀取和修改文件等。
④Python的交互模式可以很方便地檢測代碼片段。同時Python其實也自帶了一個叫作IDLE的集成開發環境,初學者可以利用它方便地創建、運行、測試和調試Python程序。
⑤Python通過添加新的模塊可以很容易進行擴展,這些模塊可以是通過類似C或C++等編譯型語言執行應用的。注意,Python是解釋型腳本語言。
⑥Python也可以被嵌入應用中來提供一個可編程的介面。
⑦Python可以在任何環境運行,包括Mac OS
X,Windows,Linux和Unix,通過非官方的構建,也可以在android和ios上運行。
⑧Python雙重免費。首先下載和使用或是在你的應用中內置Python是完全免費的。其次Python可以被自由修改然後再發布,因為語言是完全開源的。
⑶ python啥意思
Python是一種跨平台的計算機程序設計語言,是ABC語言的替代品,屬於面向對象的動態類型語言,最初被設計用於編寫自動化腳本,隨著版本的不斷更新和語言新功能的添加,越來越多被用於獨立的、大型項目的開發。
Python是一種廣泛使用的解釋型、高級和通用的編程語言。Python由荷蘭數學和計算機科學研究學會的Guido van Rossum創造,第一版發布於1991年,它是ABC語言的後繼者,也可以視之為一種使用傳統中綴表達式的LISP方言。
Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新祥宏功旦宴如模啟能的添加,逐漸被用於獨立的、大型項目的開發。
⑷ python的特點
Python是一個高層次的結合解釋性、編譯性、互動性和面向對象的腳本語言。Python的設計具有很強的可讀性,和其他語言經常使用英文關鍵詞,要比其他語言更加具有特色語法結構。
Python編程語言的特點:
首先,簡單易學:Python是一種代表簡單主義的語言,閱讀一個良好的Python程序,即便是在Python語法要求非常嚴格的大環境下,給人的感覺也是不同。Python最大優點之一,具有偽代碼的特質,可以讓我們在Python開發程序時,專注於解決問題。
其次,免費開源:python 是 FLOSS(自由/開源源碼軟體)之一,簡單的倆說,用戶使用Python進行開發或者發布自己編寫的程序,不需要支付任何的費用,也不用擔心版權問題,作為商業用途,Python也是免費的,開源正在成為軟體行業的一種發展趨勢。
然後,高級語言:Python是高級的語言,因此當使用Python語言編寫程序的時候,無需考慮底層細節方面的問題,一個用編譯型語言寫的程序,可以從源文件轉換到一個計算機使用的語言。
再次:可移植性: Python 是開源的,它已經被移植到許多平台上。也就是說Python程序無需修改可以再很多平台上運行,包含Linux、Windows等。
最後:強大的功能:Python 強大的功能也許才是很多用戶支持 Python 的最重要的原因,從字元串處理到復雜的 3D 圖形編程,Python 藉助擴展模塊都可以輕松完成。