2.1正則(re)模組
正則在python中應用非常廣泛,如:特定字串的查詢、切割與替換等, 特定格式(郵箱、手機號、ip、url)的校驗,爬蟲提取特定內容,所以在爬蟲中, 正則還是比較重要的,它會幫你提取到你需要的資訊。
使用原則
正則效率比較低,會較低**可讀性, 所以字串函式可以解決的問題就不要使用正則。
世界上最難以理解的三樣東西:道士神符、醫生處方、碼農正則。
不清楚功能不要去閱讀別人的正則,正則是用來寫的,不是讀的。
說明:我們需要解析正則,只是使用,所以需要借助』re』模組
match:從開頭進行匹配,匹配到返回結果,沒有返回none
search:任意位置匹配,功能和match一樣,都是單次的,找到就會停止
findall:匹配全部,返回所有匹配的結果列表,沒有返回空列表
compile:建立正規表示式物件,讓匹配內容和物件分開操作
例子(不建立正則物件):
import re
m = re.search('abc', 'hadajabcadjlae')
if m:
#返回匹配的內容
print(m.group())
#返回匹配內容的位置
print(m.span())
例子(建立正則物件):
import re
c = re.compile('cba')
# 從開頭匹配
#m = c.match('cbasdhaj; acbaalsdk')
#從任意位置匹配
m = c.search('casdhaj; acbaalsdk')
if m:
print(m.group())
(1)匹配單個字元
普通字元:就是一對一的完全匹配
表示中間的任一字元
如:[abcde]表示abcde的任一字元
\d表示數字字元,和[0-9]等價
\d表示非數字字元,和[^0-9]等價
\s表示空白字元(\n、\r、\t、空格)
\s表示非空白字元(\s相反的內容)
\b表示詞邊界(開頭、結尾、空格、標點)
\b表示非詞邊界(\b相反的內容)
\w表示匹配字(數字、字母、下劃線)
\w表示匹配非字(\w相反的內容)
.表示除了』\n』以外的任意字元
(2)次數限定
說明:為了修飾前面的單個字元出現的次數
? :至多一次
:指定m次
:m <= 次數 <=n
:至少m次
:至多m次
(3)邊界限定
^:以指定的內容開頭
$:以指定的內容結尾
(4)優先順序與整體
|:表示或,擁有最低的優先順序
():可以表示乙個整體
(5)findall的特殊之處
說明: 按照正則進行匹配,但是新增()後,結果只顯示()匹配的內容
例子3:
f = re.findall('a(abc)a', 'asdjaabcaasdjaabcasdkabca')
print(f)
(6)貪婪匹配
貪婪:最大限度的匹配。 正則的匹配預設是貪婪的
非貪婪:只要滿足條件,能少匹配就少匹配。 可以使用』? '取消貪婪
.+? :取消至少一次的貪婪匹配
.*? :取消任意多次的貪婪匹配
簡單來說就是能少匹配就少匹配內容
(7)字元轉義
(8)正則切割
和字串切割一樣使用split函式
例子:
import re
c = re.compile(r'\d')
string = '正則其實不難1但是學完之後2發現什麼也不出來3是這樣吧'
#字串是固定切割,不能解決某類的匹配切割問題
#print(string.split('1'))
# 按照正則進行切割
#1.建立表示式
ret = c.split(string)
print(ret)
#2.不建立表示式
print(re.split(r'\d', string))
(9)正則替換
使用sub函式
例子:
import re
s = 'how1are2you'
#正則替換,以空格替換數字
s2 = re.sub(r'\d', ' ', s)
print(s2)
總結
正則是用來寫的,所以千萬不要硬讀別人的正則。 正則在爬蟲中會經常用到,所以學好正則對爬蟲很關鍵。 當然,正則還有其他的應用和用法,但是爬蟲基本上能用的就這些了, 其他的如果有興趣可以從網上搜一下,有很多關於python正則的介紹呢!
關於adodb的簡單介紹
adodb 不管後端資料庫如何,訪問資料庫的方式都是一致的,開發設計人員不必為了某一套資料庫,而必須再學習另一套不同的 訪問方法,這大大減輕開發人員的知識負擔,過去的知識往後仍可繼續使用 外文名 active data objects data base 簡 稱 adodb 含 義 php 訪問資料...
關於GitHub的簡單介紹
github是目前世界上最先進的分布式版本控制系統,最初由linus torvalds編寫,用作linux核心 的管理。在推出後,git在其它的專案中也取得了很大成功,尤其是在ruby社群中。目前,包括rubinius merb和bitcoin在內的很多知名專案都使用了git。git同樣可以被諸如c...
關於for迴圈的簡單介紹
for迴圈結構是由三部分組成的 初始變數 迴圈條件 變數的變化和迴圈的語句塊。初始變數 迴圈開始時,變數的初始值,當定義多個變數時,他們中間用 隔開。迴圈條件 又叫測試語句,測試給定的條件是真還是假。如果條件為真,那麼就要執行迴圈中給定的 否則迴圈就會退出來。迴圈語句塊 當條件滿足時,所要執行的 給...