關於python, 一些比較常用的內建模組
加密演算法
urllib
random
timestamp
轉換為datetime
from datetime import datetime
t = 1429417200.0
print(datetime.fromtimestamp(t)) #2015-04-19 12:20:00, # 本地時間
print(datetime.utcfromtimestamp(t)) #2015-04-19 04:20:00 #utc時間
時間字串str轉換為 datetime
from datetime import datetime
cday = datetime.strptime("2015-6-1 18:19:59", "%y-%m-%d %h:%m:%s")
print(cday) #轉換後的datetime是沒有時區資訊的, 2015-06-01 18:19:59
datetime 轉換為 str
from datetime import datetime
now = datetime.now()
print(now.strftime("%a, %b %d %h:%m")) #thu, nov 30 18:21
本地時間轉換為 utc 時間
from datetime import datetime, timedelta, timezone
tz_utc_8 = timezone(timedelta(hours=8)) #建立時區 utc+8:00
now = datetime.now() #datetime.datetime(2017, 12, 1, 18, 20, 10, 904584)
dt = now.replace(tzinfo=tz_utc_8) #強制設定為 utc+8:00
dt#datetime.datetime(2017, 12, 1, 18, 20, 10, 904584, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))
時區轉換
注意:不是必須從utc+0:00
時區轉換到其他時區,任何帶時區的datetime
都可以正確轉換,例如上述bj_dt
到tokyo_dt
的轉換。
1. namedtuple
from collections import namedtuple
point = namedtuple('point', ['x', 'y'])
p = point(1,2)
p.x #1
isinstance(p, point) #true
isinstance(p, tuple) #true
2. dequenamedtuple
是乙個函式,它用來建立乙個自定義的tuple
物件,並且規定了tuple
元素個數,並可以用屬性而不是索引來引用 tuple 的某個元素
from collections import deque
q = deque(['a', 'b', 'c'])
q #deque(['y', 'a', 'b', 'c', 'x'])
q.pop() #deque(['y', 'a', 'b', 'c'])
q.popleft() #deque(['a', 'b', 'c'])
deque
是為了高效實現插入和刪除操作的雙向列表,適合用於佇列和棧,可以在隊尾,隊首,插入,刪除
3. defaultdictfrom collections import defaultdict
dd = defaultdict(lambda:'n/a')
dd['key1'] = 'abc'
dd['key1'] #'abc'
dd['key2'] #'n/a'
4. ordereddictfrom collections import ordereddict
d = dict([('a', 1), ('b', 2), ('c', 3)]) #
dic = ordereddict() #ordereddict()用來建立乙個空的有序字典
使用 dict 時,key 是無序的。如果要保持 key 的順序,可以用ordereddict
。ordereddict,與普通字典不同的是記錄了鍵值對的新增順序。
5. counterfrom collections import counter
c = counter()
for ch in
'programming':
c[ch] = c[ch] + 1
c #counter()
counter
是乙個簡單的計數器,例如,統計字元出現的個數
1. base64import base64
base64.b64encode(b'binary\x00string') #b'ymluyxj5ahn0cmluzw==
base64.b64decode(b'ymluyxj5ahn0cmluzw==') #b'binary\x00string'
base64.b64encode(b'i\xb7\x1d\xfb\xef\xff') #b'abcd++//'
base64.urlsafe_b64encode(b'i\xb7\x1d\xfb\xef\xff') #b'abcd--__'
base64.urlsafe_b64decode('abcd--__') #b'i\xb7\x1d\xfb\xef\xff'
base64
是一種用64個字元來表示任意二進位制資料的方法
2. hashlibimport hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?'.encode('utf-8'))
print(md5.hexdigest()) #d26a53750bc40b38b65a520292f69306
python的hashlib
提供了常見的摘要演算法,如md5
,sha1
等等。md5
是最常見的摘要演算法,速度很快,生成結果是固定的128bit 位元組,通常用乙個32位的16進製制字串表示。另一種常見的演算法是sha1
,sha1
的結果是160 bit位元組,通常用乙個40位的16進製制字串表示。
sha1 = hashlib.sha1()
sha1.update('how to use md5 in python hashlib?'.encode('utf-8'))
print(sha1.hexdigest()) #b752d34ce353e2916e943dc92501021c8f6bca8c
3. hmacimport hmac
message = b'hello world!'
key=b'secret'
h = hmac.new(key, message, digestmod='md5')
h.hexdigest() #0a0461e10e89506d7c31a145663bed93
python自帶的hmac
模組實現了標準的hmac演算法。使用hmac和普通hash演算法非常類似。hmac輸出的長度和原始雜湊演算法的長度一致。需要注意傳入的key和message都是bytes型別,str型別需要首先編碼為bytes
from urllib import request
with request.urlopen('') as f:
data = f.read()
print('status', f.status, f.reason)
for k,v in f.getheaders():
print('%s:%s' % (k,v))
print('data:', data.decode('utf-8'))
urllib
提供了一系列用於操作url的功能。urllib
的request
模組可以非常方便地抓取url內容,也就是傳送乙個get請求到指定的頁面,然後返回http的響應
from random import randint
x = randint(1, 6) #返回 1~6 內的整數,包括1和6
random
包含以各種方式生成隨機數的函式,其中randint()
返回乙個位於指定範圍內的整數。
常用內建模組
一.http模組 http.request 從nowapi中找乙個免費介面,進行資料請求 反爬蟲 不可以爬蟲 2.跨域處理 後端api伺服器 node.js中api伺服器的建立,我們使用乙個第三放庫 express 後端解決跨域問題 設定請求頭 使用中介軟體 第三方的包 cors3.後端伺服器 we...
Python常用內建模組
base64是一種用64個字元來表示任意二進位制資料的方法。用記事本開啟exe jpg pdf這些檔案時,我們都會看到一大堆亂碼,因為二進位制檔案包含很多無法顯示和列印的字元,所以,如果要讓記事本這樣的文字處理軟體能處理二進位制資料,就需要乙個二進位製到字串的轉換方法。base64是一種最常見的二進...
python常用內建模組(五)
requests 一 collections 是python內建的乙個集合模組,提供了許多有用的集合類。namedtuple,是乙個函式,用來建立乙個自定義的tuple物件,格式 namedtuple 名稱 屬性list 例如 建立乙個座標為 1,2 的點 from collections impo...