1.datetime
获取当前时间
>>> from datetime import datetime
>>> now=datetime.now()
>>> print(now)
2019-03-14 07:59:53.037790
获取指定时间
>>> from datetime import datetime
>>> dt=datetime(2015,4,19,12,20)
>>> print(dt)
2015-04-19 12:20:00
datetime转换为str
>>> from datetime import datetime
>>> now=datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Thu, Mar 14 08:03
日期的加减
>>> from datetime import datetime,timedelta
>>> now=datetime.now()
>>> now
datetime.datetime(2019, 3, 14, 8, 5, 3, 282871)
>>> now+timedelta(hours=10)
datetime.datetime(2019, 3, 14, 18, 5, 3, 282871)
>>> now-timedelta(days=1)
datetime.datetime(2019, 3, 13, 8, 5, 3, 282871)
>>> now+timedelta(days=2,hours=12)
datetime.datetime(2019, 3, 16, 20, 5, 3, 282871)
2.collections
用namedtuple函数自定义元祖
>>> from collections import namedtuple
>>> Point=namedtuple('Point',['x','y'])
>>> p=Point(1,2)
>>> p.x
1
>>> p.y
2
用deque双向插入,适用于栈和队列
>>> from collections import deque
>>> q=deque(['a','b','c'])
>>> q.append('x')
>>> q.appendleft('y')
>>> q
deque(['y', 'a', 'b', 'c', 'x'])
如果希望dict的key不存在返回时不报错而是返回一个值,就用defaultdict
>>> from collections import defaultdict
>>> dd=defaultdict(lambda:'N/A')
>>> dd['key1']='abc'
>>> dd['key1']
'abc'
>>> dd['key2']
'N/A'
OrderedDict可使dict的迭代有序
>>> d=dict([('a',1),('b',2),('c',3)])
>>> d
{'a': 1, 'b': 2, 'c': 3}
>>> od=OrderedDict([('a',1),('b',2),('c',3)])
>>> od
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
Counter计数器
>>> from collections import Counter
>>> c=Counter()
>>> for ch in 'programming':
c[ch]=c[ch]+1
>>> c
Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})
3.itertools
groupby()把迭代器中相邻的重复元素挑出来放在一起
>>> import itertools
>>> for key,group in itertools.groupby('AAABBCCAAA'):
print(key,list(group))
A ['A', 'A', 'A']
B ['B', 'B']
C ['C', 'C']
A ['A', 'A', 'A']
4.urllib
返回get请求使用Request对象,通过往Request对象添加HTTP头,我们就可以把请求伪装成浏览器
from urllib import request
req = request.Request('http://www.douban.com/')
req.add_header('User-Agent','Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
with request.urlopen(req) as f:
print('Status:',f.status,f.reason)
for k,v in f.getheaders():
print('%s:%s' % (k,v))
print('Data:',f.read().decode('utf-8'))
Status: 200 OK
Date:Thu, 14 Mar 2019 01:46:39 GMT
Content-Type:text/html; charset=utf-8
Transfer-Encoding:chunked
Connection:close
Vary:Accept-Encoding
X-Xss-Protection:1; mode=block
X-Douban-Mobileapp:0
Expires:Sun, 1 Jan 2006 01:00:00 GMT
Pragma:no-cache
Cache-Control:must-revalidate, no-cache, private
Set-Cookie:talionnav_show_app="0"
Set-Cookie:bid=3iD5-8rwH4Q; Expires=Fri, 13-Mar-20 01:46:39 GMT; Domain=.douban.com; Path=/
X-DOUBAN-NEWBID:3iD5-8rwH4Q
X-DAE-Node:anson45
X-DAE-App:talion
Server:dae
X-Frame-Options:SAMEORIGIN
Strict-Transport-Security:max-age=15552000;
X-Content-Type-Options:nosniff