標籤:style nbsp 等等 利用 需要 檔案中 大小寫 個數 1.5
什麼是模組?
常見的情境:一個模組就是一個包含了python定義和聲明的檔案,檔案名稱就是模組名字加上.py的尾碼。
但其實import載入的模組分為四個通用類別:
1 使用python編寫的代碼(.py檔案)
2 已被編譯為共用庫或DLL的C或C++擴充
3 包好一組模組的包
4 使用C編寫並連結到python解譯器的內建模組
為何要使用模組?
如果你退出python解譯器然後重新進入,那麼你之前定義的函數或者變數都將丟失,因此我們通常將程式寫到檔案中以便永久儲存下來,需要時就通過python test.py方式去執行,此時test.py被稱為指令碼script。
隨著程式的發展,功能越來越多,為了方便管理,我們通常將程式分成一個個的檔案,這樣做程式的結構更清晰,方便管理。這時我們不僅僅可以把這些檔案當做指令碼去執行,還可以把他們當做模組來匯入到其他的模組中,實現了功能的重複利用
如何使用模組?
模組可以包含可執行檔語句和函數的定義,這些語句的目的是初始化模組,它們只在模組名第一次遇到匯入import語句時才執行(import語句是可以在程式中的任意位置使用的,且針對同一個模組很import多次,為了防止你重複匯入,python的最佳化手段是:第一次匯入後就將模組名載入到記憶體了,後續的import語句僅是對已經載入大記憶體中的模組對象增加了一次引用,不會重新執行模組內的語句)
每個模組都是一個獨立的名稱空間,定義在這個模組中的函數,把這個模組的名稱空間當做全域名稱空間,這樣我們在編寫自己的模組時,就不用擔心我們定義在自己模組中全域變數會在被匯入時,與使用者的全域變數衝突
Regex
Regex本身也和python沒有什麼關係,就是匹配字串內容的一種規則。
官方定義:Regex是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。
線上測試載入器 http://tool.chinaz.com/regex/
字元組:同一個位置上可以出現的字元的範圍。
在同一個位置可能出現的各種字元組成了一個字元組,
在Regex中用[]表示 字元分為很多類,比如數字、字母、標點等等。
假如你現在要求一個位置"只能出現一個數字",那麼這個位置上的字元只能是0、1、2...9這10個數之一。
正則 |
待匹配字元 |
匹配 結果 |
說明 |
[0123456789] |
8 |
True |
在一個字元組裡枚舉合法的所有字元,字元組裡的任意一個字元 和"待匹配字元"相同都視為可以匹配 |
[0123456789] |
a |
False |
由於字元組中沒有"a"字元,所以不能匹配 |
[0-9] |
7 |
True |
也可以用-表示範圍,[0-9]就和[0123456789]是一個意思 |
[a-z] |
s |
True |
同樣的如果要匹配所有的小寫字母,直接用[a-z]就可以表示 |
[A-Z] |
B |
True |
[A-Z]就表示所有的大寫字母 |
[0-9a-fA-F] |
e |
True |
可以匹配數字,大小寫形式的a~f,用來驗證十六進位字元 |
字元:
元字元 |
匹配內容 |
| . |
匹配除分行符號以外的任一字元 |
| \w |
匹配字母或數字或底線 |
| \s |
匹配任意的空白符 |
| \d |
匹配數字 |
| \n |
匹配一個分行符號 |
| \t |
匹配一個定位字元 |
| \b |
匹配一個單詞的結尾 |
| ^ |
匹配字串的開始 |
| $ |
匹配字串的結尾 |
| \W |
匹配非字母或數字或底線 |
| \D |
匹配非數字 |
| \S |
匹配非空白符 |
| a|b |
匹配字元a或字元b |
| () |
匹配括弧內的運算式,也表示一個組 |
| [...] |
匹配字元組中的字元 |
| [^...] |
匹配除了字元組中字元的所有字元 |
量詞:
量詞 |
用法說明 |
| * |
重複零次或更多次 |
| + |
重複一次或更多次 |
| ? |
重複零次或一次 |
| {n} |
重複n次 |
| {n,} |
重複n次或更多次 |
| {n,m} |
重複n到m次 |
19 Python 正則模組和Regex