Python常用模塊之json、pickle、random、hashlib、collections
阿新 • • 發佈:2018-08-18
隨機 寫入文件 用戶 encode 引用 pickle turn 適合 collect
1、json和pickle
json用於字符串和Python數據類型間進行轉換
pickle用於python特有的類型和python的數據類型間進行轉換
json和pickle均提供了四種方法dumps,dump,loads,load
##json dumps() ##轉換成字符串 loads() ##將json編碼的字符串再轉換為python的數據結構 dump() ##轉換成字符串並存存儲到文件中 load() ##從數據文件中讀取數據,並將json編碼的字符串轉換為python的數據結構 >>> print(json.dumps([‘aa‘, ‘bb‘, ‘cc‘])) ["aa", "bb", "cc"] >>> print(json.loads(‘["aa", "bb", "cc"]‘)) [‘aa‘, ‘bb‘, ‘cc‘] ##pickle dumps() ##將數據通過特殊的形式轉換為只有python語言認識的字符串 loads() ##將pickle數據轉換為python的數據結構 dump() ##將數據通過特殊的形式轉換為只有python語言認識的字符串,並寫入文件 load() ##從數據文件中讀取數據,並轉換為python的數據結構 >>> print(pickle.dumps([‘aa‘, ‘bb‘, ‘cc‘])) b‘\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.‘ >>> print(pickle.loads(b‘\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.‘)) [‘aa‘, ‘bb‘, ‘cc‘]
2、random
random.random() ##0~1之間的隨機小數 random.uniform(1,3) ##1~3之間的隨機小數 random.randint(1,5) ##[1,5]之間的隨機整數 random.randrange(1,10,2) ##[1,10) 之間隨機奇數,間隔為2的數 random.choice([1,‘23‘,[4,5]]) ##隨機選擇一個返回 random.sample([1,‘23‘,[4,5]],2) ##隨機選擇多個返回,返回的個數為函數的第二個參數 random.shuffle([1,3,5,7,9]) ##打亂列表順序 ##返回驗證碼 import random def v_code(): code = ‘‘ for i in range(5): num=random.randint(0,9) alf=chr(random.randint(65,90)) add=random.choice([num,alf]) code="".join([code,str(add)]) return code print(v_code())
3、hashlib
hashlib提供了常見的摘要算法,如MD5,SHA1等等。
##md5計算 md5 = hashlib.md5("key".encode("utf8")) ##可以添加秘鑰,秘鑰可以是用戶id,這樣就算密碼相同,加密後的md5也是不一樣的 md5.update(b‘love fly‘) print(md5.hexdigest()) ##SHA1 sha1 = hashlib.sha1("key".encode("utf8")) sha1.update(b‘love fly‘) print(sha1.hexdigest()) ##計算MD5 >>> import hashlib >>> md5 = hashlib.md5() >>> md5.update(b‘love fly‘) >>> print(md5.hexdigest()) 61976ec704dbce25ccb37ecacef1e4d6 ##如果數據量很大,可以分塊多次調用update(),最後計算的結果是一樣的 >>> import hashlib >>> md5 = hashlib.md5() >>> md5.update(b‘love‘) >>> md5.update(b‘ fly‘) >>> print(md5.hexdigest()) 61976ec704dbce25ccb37ecacef1e4d6
4、collections
ollections是Python內建的一個集合模塊,提供了許多有用的集合類,是python對默認數據結構的一種補充
##namedtuple是一個函數,它用來創建一個自定義的元組對象,並且規定了元組元素的個數,並可以用屬性而不是索引來引用元組的某個元素。 >>> from collections import namedtuple >>> colltuple = namedtuple(‘colltuple‘, [‘x‘,‘y‘]) >>> col = colltuple(‘yong‘,‘fly‘) >>> col.x ‘yong‘ >>> col.y ‘fly‘ 在內置數據類型(dict、list、set、tuple)的基礎上,collections模塊還提供了幾個額外的數據類型:Counter、deque、defaultdict、namedtuple和OrderedDict等。 1.namedtuple: 生成可以使用名字來訪問元素內容的tuple 2.deque: 雙端隊列,可以快速的從另外一側追加和推出對象 3.Counter: 計數器,主要用來計數 4.OrderedDict: 有序字典 5.defaultdict: 帶有默認值的字典 ##deque: list插入和刪除元素很慢,數據量大的時候,插入和刪除效率很低。deque是為了高效實現插入和刪除操作的雙向列表,適合用於隊列和棧。 >>> from collections import deque >>> q = deque([‘a‘,‘b‘,‘c‘]) >>> q.append(‘d‘) ##默認添加列表最後一項 >>> q.appendleft(‘e‘) ##添加到列表第一項 >>> q deque([‘e‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘]) >>> q.pop() ##默認刪除列表最後一個元素 ‘d‘ >>> q.popleft() ##刪除列表的第一個元素 ‘e‘ >>> q deque([‘a‘, ‘b‘, ‘c‘]) ##defaultdict使用字典時,如果引用的Key不存在,就會拋出 KeyError,如果希望key不存在時,返回一個默認值,就可以用 defaultdict. X=defaultdict(lambda: ‘N/A‘) ##OrderedDict有序字典的應用。OrderedDict 的有序性是按照插入的順序,而不是KEY的順序。 ##Counter簡單的計數器,例如,統計字符出現的個數。
Python常用模塊之json、pickle、random、hashlib、collections