學習筆記 六 模組 包 正規表示式

2021-08-08 15:40:19 字數 3857 閱讀 7420

1.定義

模組:用來從邏輯上組織python**,本質就是.py結尾的python檔案。

包:用來從邏輯上組織模組的,本質就是乙個目錄(必須帶有init.py檔案)__int.py用於標識當前資料夾是乙個包。

2.import本質

匯入模組的本質就是把python檔案解釋一遍

import modelname->modelname.py->modelname.py的路徑->sys.path

匯入包的本質就是執行該包下的init.py檔案

3.內建模組

(1).time和datetime

a.時間戳(timestamp)

b.格式化時間字串

c.元祖(struct_time)

a->c:gmtime(結果為utc時區) localtime(utc+8時區)

c->a:mktime

c->b:strftime(format,time_tuple)

b->c:strptime(string,format)

(2).random

random.randint(x,y)#隨機產生[x,y]之間的數

random.randrange(x,y)#隨機產生[x,y)之間

random.choice()#從(列表or字串or元祖)中隨機抽取乙個

random.sample('str',n)#從str中隨機抽取n個字元

random.random()#隨機浮點數

random.uniform(x,y)#隨機產生x,y中間的浮點數

(3).sys

sys.argv

#命令列引數list,第乙個元素是程式本身路徑

sys.exit(0)#退出

sys.maxint

#最大的int值

sys.path

#返回模組的搜尋路徑,初始化時使用pythonpath環境變數的值

sys.platform

#返回作業系統平台名稱

(4).shutil#檔案的copy、壓縮包

shutil.copyfileobj(src,dst.length)

shutil.copyfile(src,dst)#拷貝檔案

shutil.copymode(src,dst)#僅拷貝許可權。內容、組、使用者均不變

shutil.copystat(src,dst)#拷貝狀態的資訊

shutil.copy(src,dst)#拷貝檔案和許可權

shutil.copy2(src,dst)#拷貝檔案和狀態資訊

shutil.copytree(src,dst,symlinks=false,ignore=nono)#遞迴的去拷貝檔案

shutil.rmtree(file)#遞迴刪除檔案

shutil.move(src,dst)#遞迴的移動檔案

shutil.make_archive(base_name,format,...)#base_name(檔名)、fromat(壓縮包種類)主要是呼叫zipfile和tarfile

(5).hashlib#用於加密相關的操作

import hashlib

m=hashlib.md5()

m.update(b"hello")

print(m.hexdigest())

m=hashlib.sha1()

m.update(b"hello")

print(m.hexdigest())

import hmac

m=hmac.new(b"hello","it`s me"

.encode(encoding="utf-8"))

print(m.hexdigest())

print(m.digest())

(6).json和pickle

json#把資料進行序列化,python在記憶體中的資料型別不能直接寫到檔案(只存字串 or bytes)中去,必須轉成(dump)字串且資料不發生損壞。

#解決不同平台不同語言之間的資料交換

pickle#用於python特有的型別和python的資料型別間進行轉換

import shelve

shelve模組是乙個簡單的k,v將記憶體資料通過檔案持久化的模組,可以持久化任何pickle可支援的python資料格式

4.正規表示式

''

''.' 預設匹配除\n之外的任意乙個字元,若指定falg dotall,則匹配任意字元,包括換行

'^' 匹配字串的開始位置。若設定了regexp物件的multiline屬性,^也匹配「\n」或「\r」之後的位置。

'?' 匹配?號前面的字元一次或0次~

'+' 代表匹配前乙個字元一次或多次

'$' 匹配輸入字串的結束位置

'*' 匹配*號前的字元,0次或多次

'\a' 只從字元開頭開始匹配,\a[0-9]

'\z' 匹配字元結尾,[a-z]\z

'\d' 匹配0-9

'\d' 匹配非數字

'\w' 匹配[a-z,a-z,0-9]

'\w' 匹配非[a-z,a-z,0-9]

'[a-z]' 匹配指定範圍內的任意字元。

'' 最少匹配n次且最多匹配m次

'' 匹配m次

'|' 兩個匹配條件進行邏輯「或」

'(...)' 分組匹配

'\s' 匹配任何不可見字元,包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。

'\s' 匹配任何可見字元。等價於[^ \f\n\r\t\v]。'''

import re

res=re.match("^.+","helloworld123")#從字串頭開始往後匹配

#res=re.search()#整個文字內匹配包含

#res=re.findall("[0-9]","123hjk345kl464")#把所有匹配到的字元放到以列表中的元素返回

#res=re.split("[0-9]","asf1234df23af")#以匹配到的字元當雜湊表分隔符

#res=re.sub(pattern,replace,string,count)#匹配字元並替換,count代表替換次數

res=re.search("(?p[0-9]+)","asdf1234asdf")

print(res.group())

print(res.groupdict())

res=re.search("(?p[0-9]+)(?p[a-za-z]+)","asdf1234asdf")

print(res)

print(res.group())

print(res.groupdict())

res=re.search("(?p[0-9])(?p[0-9])(?p[0-9])","123321199008171021")

print(res.groupdict())

res=re.split("[0-9]+","asf1234df23af")

print(res)

#re.i(re.ignorecase)#忽略大小寫

res=re.search("[a-z]+","adfa",flags=re.ignorecase)

print(res)

#re.s(re.s)#改變.的任意匹配模式,不將\n除外

res=re.search(r".+","\nadf\nadf",flags=re.s)

print(res)

正規表示式,模組

正規表示式 1 9 d 0 9x 1 9 d 0 9x 1 9 d d 0 9x 1 9 d 0 9x 1 9 d 貪婪匹配 貪婪匹配就是盡可能多的匹配 123script 加上?為將貪婪匹配模式轉為非貪婪匹配模式,會匹配盡量短的字串 的用法 是任意字元 是取 0 至 無限長度 是非貪婪模式。何在一...

Linux學習(六) 正規表示式

書上說,正規表示式很重要,但是本人才開始學習,也不知道,到底有什麼重要的作用。在這裡記錄只是為了以後方便查閱。這裡介紹的是用於編寫shell指令碼的正規表示式。首先,我們要先認識基礎的正規表示式的重要的特殊字元的含義。如下表 re字元 含義 舉例 word 表示行首,待搜尋的word字串在行首 gr...

python基礎 學習筆記六 正規表示式

正規表示式是用來匹配字串的工具,我們可以給字串制定乙個規則,一旦符合符合這個規則,就認為 匹配 了。1 d 匹配乙個數字 2 w 匹配乙個字母或數字 3 匹配任意乙個字元 4 表示任意個字元 包括0個 5 表示至少1個字元 6 表示1個或0個字元 7 表示n個字元 8 表示n m個字元 9 s 匹配...