py 的 第 16 天
今天課上的主要內容本打算是模塊的,可是看起來好難,今天先講了講正則表達式,但是講了1天也沒特別明白
先寫下模塊吧,什麽是模塊,一組功能的集合
你要和某個東西打交道,而這個東西本身和python沒有關系,這個東西本身就存在
py有一個功能的集合,專門負責和這個東西打交道
模塊的類型
內置模塊 不需要我們自己安裝的,解釋器自帶的
第三方模塊 需要我們自己安裝的模塊
自定義模塊 我們自己寫的模塊
import os 模塊
os。remove 刪除文件
os。rename 重命名文件
模塊就是給我們提供功能
這個要操作的內容本來就存在
模塊只不過是py提供給我們曲操作這個內容的方法
re模塊
在py中使用正則表達式
今天就教了正則表達式
正則表達式是一個獨立的規則,獨立的語言
正則表達式是什麽?能做什麽?
從大段的文字中找到符合規則的內容
open打開文件
讀文件 str
從一長串的字符串中找到所需要的XXX位數字
一個字符一個字符的讀
判斷某個字符串是否完全符合規則
驗證這個手機號是否合法
給這個手機號發送一個驗證碼
用戶收到驗證碼 填寫驗證碼
完成註冊
正則表達式
從大段的文字中找到符合規則的內容
爬蟲 從網頁的字符串中獲取你想要的數據
日誌分析 提取 年-月-日-------xxxx
日誌格式(包括但不限於)
2018-1-1 10:00:00 xxxxxx
判斷某個字符串是夠完全符合規則
表單驗證: 手機號 qq號碼 郵箱 銀行卡 身份證號 密碼
正則表達式 只和字符串打交道
正則表達式的規則
只有規則,沒有邏輯 字符串 從字符串中找到符合負責的內容
字符組:【】寫在括號中的內容,都出現在下面的某一個字符的位置上都是符合規則的
【0-9】匹配數字
【a-z】匹配小寫字母
【A-Z】匹配大寫字母
【4-6】這樣就匹配一段,字母數字都可以
[a-zA-Z0-9_]匹配大小寫字母數字下劃線
65-90 字符串大寫字母
97-122 字符串小寫字母
轉義符
w w
元字符
\w 匹配數字字母下劃線 Word關鍵字[a-zA-Z0-9_]
\d 匹配所有數字 digit [0-9]
\s 匹配所有的空白符 回車/換行符 制表符(tab) 空格 space 【\n\t】
匹配換行符 回車 \n
匹配制表符 tab \t
匹配空格 後面有跟個空格的就是看不出來
\W\D\S和\w\d\s取反,正好反著來
[\s\S] [\d\D] [\w\W]是三組全集 意思是匹配所有字符
\b 表示單詞的邊界
和轉移字母相關的 元字符
\w\d\s(\n\t)\b\W\D\S
^ $
^ 匹配一個字符串的開始
$ 匹配一個字符串的結束
. 表示匹配 除換行符的之外的所有字符
[] 只要出現在中括號內的內容都可以被匹配
[^]只要不出現在中括號中的內容都可以被匹配
有一些有特殊意義的字符進入字符組中會回復它本來的意義 : . | [ ] ( )
a|b 或 符合a或b規則的都可以被匹配
如果a規則是b規則的一部分,且a規則比b規則要苛刻 要長 ,就把a規則寫在前面
將更復雜的 更長的規則寫在最前面
() 分組 表示給幾個字符加上量詞約束的需求的時候,就給這些量詞分在一個組
量詞
{n} 表示 這個量詞之前的字符出現n次
{n,} 表示這個量詞之前的字符至少出現n次
{n,m}表示這個量詞之前的字符出現n-m次
? 表示匹配量詞之前的字符出現 0次或者1次 表示可有可無 (這個表示感覺不對)但是該怎麽寫現在不知道怎麽說
+ 表示匹配量詞之前的字符出現 1次或者多次
* 表示匹配量詞之前的字符出現 0次或者多次
擴展
匹配整數 \d+
匹配小數\d+\.\d+
匹配小數或者整數
\d+\.\d+|\d+
\d+(\.\d+)?
匹配身份證號碼:【1-9】\d{16}[\dx]|[1-9]\d{14}
[1-9]\d{14}(\d{2}[\dX])?
正則表達式的匹配特點:貪婪匹配
它會在允許的範圍內取最長的結果
非貪婪模式/惰性匹配:在量詞的後面加上?
. * ? x 匹配任意非換行符字符任意長度 直到遇到x就停止
print(r‘\\n‘)
print(r’\n‘)
關於字符串挪到py中的轉義問題:只需要在工具中測試完畢,確認可以匹配上之後,挪到py中在字符串的外面加上r,r‘’即可
py 的 第 16 天