一、模塊
模塊實質上就是一個python文件,它是用來組織代碼的,意思就是說把python代碼寫到里面,文件名就是模塊的名稱,test.py test就是模塊名稱。
import 模塊的實質就是把要導入模塊里面的代碼,從上到下執行一遍找模塊的順序是,先從當前目錄下找,找不到的話,再環境變量里面找。
模塊的分類:
Ø 標准庫:python內置的
Ø 開源模塊:第三方
Ø 自定義模塊:自己寫的
其中開源模塊需要安裝,安裝方式有一下兩種:
安裝方式第一種:
這是操作系統命令,不是在python命令行里面執行
pip install xxx 安裝某個模塊
pip list 查看已經安裝的模塊
pip uninstall xxx卸載模塊
pip這個模塊呢,在python3里面是python自帶的,安裝完python就能直接用,但是在python2里面是沒有這個模塊的,需要你手動安裝才能用
easy_install requests #這個也是傻瓜式的
第二種方式,手動安裝:
1、先下載安裝包,直接百度搜比如說python requests模塊
2、解壓安裝包
3、在解壓的目錄下執行 python setup.py install
OS模塊
print(os.getcwd())#取當前工作目錄
print(os.chdir(r"e:\byz_code\day2"))#更改當前目錄
print(os.mkdir("test1"))#創建文件夾
print(os.makedirs(r"test1\test2"))#遞歸創建文件夾,父目錄不存在時創建父目錄
print(os.removedirs(r"test1\test2"))#遞歸刪除空目錄
print(os.rmdir("test1"))#刪除指定的文件夾,只能刪除空文件夾
print(os.remove(r"E:\byz_code\day4\a.txt"))#刪除文件
os.rename("test","test1")#重命名
print(os.sep)#當前操作系統的路徑分隔符
print(__file__)#代表當前文件
print(os.path.abspath('bb.py'))#獲取絕對路徑
print(__file__)#代表當前文件
print(os.path.dirname)
print(os.path.dirname(os.path.dirname(__file__)))#獲取父目錄
print(os.path.exists("hhaaa"))#目錄/文件是否存在
print(os.path.isfile("bb.py"))#判斷是否是一個文件
print(os.path.isdir("/usr/local"))#是否是一個路徑
print(os.path.join("root",'hehe','haha','a.log'))
RE模塊
re.match 只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none
re.search 匹配包含,search()會掃描整個字符串並返回第一個成功的匹配
re.findall 把所有匹配到的字符放到以列表中的元素返回
re.splitall 以匹配到的字符當做列表分隔符
re.sub 匹配字符並替換
二、正則表達式
正則表達式
正則表達式就是用查找字符串的,它能查找規則比較復雜的字符串
數量詞
'*' 匹配*號前的字符0次或多次,只是*前面的一個字符
print(re.findall(r'a*b','ab a abbbbbb aab'))
>>> ['ab', 'ab', 'b', 'b', 'b', 'b', 'b', 'aab']
'+' 匹配前一個字符1次或多次,只是+前面的一個字符
print(re.findall(r'st+','besttest is best s'))
>>> ['stt', 'st', 'st']
'?' 匹配前一個字符1次或0次,只是?前面的一個字符
print(re.findall(r'st?','besttest is best'))
'{2}' 匹配前一個字符m次
print(re.findall(r't{2}er','besttest is best letter letter'))
>>> ['tter','tter']
'{n,m}' 匹配前一個字符n到m次
print(re.findall(r't{1,3}','besttest is best ttttt'))
>>> ['tt', 't', 't','ttttt']
一般字符
'.' 默認匹配除\n之外的任意一個字符
print(re.findall(r'b.','besttest is good ba bf bo'))
>>> [['be', 'ba', 'bf', 'bo']
'\' 轉譯符,前面的* + ?這樣的字符都有特殊含義了,如果你想就想找它的話,那就得轉譯了
意思就是說如果你想讓特殊字符失去以前的含義,那么就得給它前面加上\
print(re.findall(r'\?','besttest is best????'))
>>> ['?', '?', '?', '?']
'|' 匹配|左或|右的字符
print(re.findall(r'best|is','besttest is best'))
>>> ['best', 'is', 'best'
'[]' 字符集合,某些字符的集合,匹配的時候是這個集合里面的任意一個就行
print(re.findall(r'be[stacj]','besttest is best bejson bed'))
>>>['bes', 'bes', 'bej']
在[]里面如果用^的話代表取反,也就是不包括的這些字符串的
print(re.findall(r'be[^stac]','besttest is best bejson'))
邊界匹配
'^' 匹配以什么字符開頭,多行情況下匹配每一行的開頭
print(re.findall(r'^b','besttest is good\nbestest',re.M)) #re.M表示匹配多行
print(re.findall(r'^http://','http://www.baidu.com is good\nbestest'))
>>> ['b']
print(re.findall(r'^b','besttest is good\nbest'),re.M)#多行模式
>>> ['b','b']
'$' 匹配以什么字符結尾,多行情況下匹配每一行的結尾
print(re.findall(r'd$','besttest is good'))
未全整理完,后續整理