廖雪峰老師的python教程
正規表示式的功能十分強大,用法也十分的多,在廖雪峰老師的python教程中也只是點到為止,僅做了解作用,更深入還希望查閱工具。
正規表示式也是用字串表示的,有字元表示字元的方法
\d
匹配乙個數字
\w
匹配乙個數字或字母
.
匹配任何字元
\s
匹配乙個空格(包括tab)
如'\w\w\s\d.'
可以匹配'py 3!'
*
匹配包括0個的任意個字元
+
表示至少1個字元
?
表示0或1個字元
表示n個字元
表示n-m個字元
例如:\d\-\d
\d
代表著可以識別3個字元
\d
代表著可以識別3-8個字元
\-
可以轉義 \ 字元
所以這段就可以識別'010-123456'
這種字串
精確的匹配,可以用劃定範圍:
[a-za-z\_][0-9a-za-z\_]
限定前面乙個大小寫字母或_ 加上後面乙個最長20字元的可以包括大小寫字母和_的字串
a|b
代表a或b
^
為行開頭 例如^\d
為行開頭必須為數字
$
為行末尾 例如\d$
為行末尾必須為數字
使用r
轉義,可以直接將字串變為正規表示式字串
例如r'python'
的正規表示式字串就是'python'
引入正規表示式,可以使用re模組
import re
match()
判斷是否匹配,匹配返回乙個match物件,不匹配返回none
常用形式
test =
'使用者輸入的字串'
if re.match(r'正規表示式'
, test)
:print
('ok'
)else
:print
('failed'
)
正規表示式中使用spilt()
切割更加方便
re.split(r'[\s\,\;]+'
,'a,b;; c d')[
'a',
'b',
'c',
'd']
例如在這中間,就可以按照\s(空格) \,(逗號) ; (分號)切割
正規表示式還可以進行分組操作
m = re.match(r'^(\d)-(\d)$'
,'010-12345'
)m.group(0)
'010-12345'
m.group(1)
'010'
m.group(2)
'12345'
如例,使用^(\d)-(\d)$
將字串分為前後兩組,前面固定3個字元,後面3-8個字元
其中group(0)固定為原字串
group(1)與group(2)是前後分割的字串
正則匹配預設為貪婪匹配,如:
re.match(r'^(\d+)(0*)$'
,'102300'
).groups()(
'102300',''
)
在前面的分組中,規定了數字型別,但沒有限定個數,會預設匹配盡量多的數字,所以後面的一組就沒有機會匹配
re.match(r'^(\d+?)(0*)$'
,'102300'
).groups()(
'1023'
,'00'
)
在此情況下,使用\d+?
令其進行非貪婪匹配(盡可能少的匹配),所以後字串盡可能的多匹配0,出現了下面的情況。
正規表示式在基於python的爬蟲中利用較多,之後需要深度的學習。
python廖雪峰教程 學習筆記
如何用字元來描述字元 d匹配數字 digit w匹配字母或數字 word s可以匹配空格 space 表示任意個字元,表示至少乙個字元 表示0個或1個字元,表示n個字元,表示n m個字元 可以匹配任意字元 例如 kongxiangyu w如何做到更精確的匹配?規定數字 字母或者下劃線 0 9a za...
廖雪峰python教程學習筆記(函式)
1.max函式可以接收任意多個引數,並返回最大的那個 2.函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個別名 3.在python中,定義乙個函式要用def語句,依次寫出函式名 括號 括號中的引數和冒號,然後在縮排塊中編寫函式體,函式的返回值用return...
廖雪峰python教程學習 sorted小結
廖雪峰老師的python教程 我們常用類似於氣泡排序 快速排序等進行數字上的排序,在python中,我們可以用sorted函式對字串與字典中的內容進行比較。sorted 36,5,12,9 21 排序後 21,12,5,9,36 此外,sorted函式可以通過設定key的形式限定排序方式,例如 so...