Python爬蟲程序設計KC18_第1頁
Python爬蟲程序設計KC18_第2頁
Python爬蟲程序設計KC18_第3頁
Python爬蟲程序設計KC18_第4頁
Python爬蟲程序設計KC18_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python爬蟲程序設計KC181.8正則表達式正則表達式是用來匹配與查找字符串的,從網上爬取數據自然或多或少會用到正則表達式。Python的正則表達式要先引入re模塊,正則表達式以r引導,例如:importrereg=r"\d+"m=re.search(reg,"abc123cd")print(m)其中r"\d+"正則表達式表示匹配連續的多個數值,search是re中的函數,從"abc123cd"字符串中搜索連續的數值,得到"123",返回一個匹配對象,因此程序的結果如下:<_sre.SRE_Matchobject;span=(3,6),match='123'>從結果看出,在指定的字符串中找到了連續的數值,它們是"123",span(3,6)表示開始位置是3,結束位置是6,這正好是"123"在"abc123cd"中的位置。Python中關于正則表達式的規則比較多,下面將介紹主要的內容,詳細內容讀者可以參考相關資料。1、字符"\d"匹配0-9之間的一個數值。例如:importrereg=r"\d"m=re.search(reg,"abc123cd")print(m)結果找到了第一個數值"1":<_sre.SRE_Matchobject;span=(3,4),match='1'>2、字符"+"重復前面一個匹配字符一次或者多次。例如:importrereg=r"b\d+"m=re.search(reg,"a12b123c")print(m)結果找到了"b123":<_sre.SRE_Matchobject;span=(3,7),match='b123'>注意:r"b\d+"第一個字符要匹配"b",后面是連續的多個數字,因此是"b123",不是"a12"。3、字符"*"重復前面一個匹配字符零次或者多次。"*"與"+"類似,但有區別,例如:importrereg=r"ab+"m=re.search(reg,"acabc")print(m)reg=r"ab*"m=re.search(reg,"acabc")print(m)結果:<_sre.SRE_Matchobject;span=(2,4),match='ab'><_sre.SRE_Matchobject;span=(0,1),match='a'>4、字符"?"重復前面一個匹配字符零次或者一次。例如:importrereg=r"ab?"m=re.search(reg,"abbcabc")print(m)結果:<_sre.SRE_Matchobject;span=(0,2),match='ab'>匹配結果是"ab",其中b重復一次。5、字符"."代表任何一個字符,但是沒有特別聲明時不代表字符"\n"。例如:importres="xaxby"m=re.search(r"a.b",s)print(m)結果"."代表了字符"x"<_sre.SRE_Matchobject;span=(1,4),match='axb'>6、"|"代表把左右分成兩個部分。例如:importres="xaabababy"m=re.search(r"ab|ba",s)print(m)結果匹配"ab"或者"ba"都可以:<_sre.SRE_Matchobject;span=(2,4),match='ab'>7、特殊字符使用反斜線"\"引導,例如"\r"、"\n"、"\t"、"\\"分別表示回車、換行、制表符號與反斜線自己本身。例如:importrereg=r"a\nb?"m=re.search(reg,"ca\nbcabc")print(m)結果匹配"a\n\b":<_sre.SRE_Matchobject;span=(1,4),match='a\nb'>8、字符"\b"表示單詞結尾,單詞結尾包括各種空白字符或者字符串結尾。例如:importrereg=r"car\b"m=re.search(reg,"Thecarisblack")print(m)結果匹配"car",因為"car"后面是以個空格:<_sre.SRE_Matchobject;span=(4,7),match='car'>9、"[]"中的字符是任選擇一個,如果字符是ASCII碼中連續的一組,那么可以使用"-"符號連接,例如[0-9]表示0-9的其中一個數字,[A-Z]表示A-Z的其中一個大寫字符,[0-9A-Z]表示0-9的其中一個數字或者是A-Z的其中一個大寫字符。例如:importrereg=r"x[0-9]y"m=re.search(reg,"xyx2y")print(m)結果匹配"x2y":<_sre.SRE_Matchobject;span=(2,5),match='x2y'>10、"^"出現在[]的第一個字符位置,就代表取反,例如[^ab0-9]表示不是a、b,也不是0-9的數字。例如:importrereg=r"x[^ab0-9]y"m=re.search(reg,"xayx2yxcy")print(m)結果匹配"xcy":<_sre.SRE_Matchobject;span=(6,9),match='xcy'>

11、"\s"匹配任何空白字符,等價"[\r\n\x20\t\f\v]"。例如:importres="1aba\tbxy"m=re.search(r"a\sb",s)print(m)結果匹配"ab":<_sre.SRE_Matchobject;span=(1,4),match='ab'>

12、"\w"匹配包括下劃線子內的單詞字符,等價于"[a-zA-Z0-9_]"。例如:importrereg=r"\w+"m=re.search(reg,"Pythoniseasy")print(m)結果匹配"Python":<_sre.SRE_Matchobject;span=(0,6),match='Python'>13、"^"匹配字符串的開頭位置。例如:importrereg=r"^ab"m=re.search(reg,"cabcab")print(m)結果:None沒有匹配到任何字符,因為"cabcab"中雖然有"ab",但不是"ab"開頭。14、"$"字符匹配字符串的結尾位置。例如:importrereg=r"ab$"m=re.search(reg,"abcab")print(m)匹配結果是最后一個"ab",而不是第一個"ab":<_sre.SRE_Matchobject;span=(3,5),match='ab'>15、使用括號(...)可以把(...)看成一個整體,經常與"+"、"*"、"?"的連續使用,對(...)部分進行重復。例如:importrereg=r"(ab)+"m=re.search(reg,"ababcab")print(m)結果匹配"abab","+"對"ab"進行了重復:<_sre.SRE_Matchobject;span=(0,4),match='abab'>例:匹配找出英文句子中所有單詞我們可以使用正則表達式r"[A-Za-z]+\b"匹配單詞,它表示匹配由大小寫字母組成的連續多個字符,一般是一個單詞,之后"\b"表示單詞結尾。importres="Iamtestingsearchfunction"reg=r"[A-Za-z]+\b"m=re.search(reg,s)whilem!=None:start=m.start()end=m.end()print(s[start:en

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論