1、datetime
datetime是Python处理日期和时间的标准库。
from datetime import datetime, timedelta, timezone
# 获取当前日期和时间
now = datetime.now()
print(now) # 2020-04-29 12:36:26.656871
print(type(now)) # <class 'datetime.datetime'>
# 获取指定日期和时间
dt = datetime(2020, 4, 15, 12, 30)
print(dt) # 2020-04-15 12:30:00
# 把日期转化成时间戳
dts = dt.timestamp()
print(dts) # 1586925000.0
# 把时间戳转化成日期
dt2 = datetime.fromtimestamp(dts)
print(dt2) # 2020-04-15 12:30:00
# 把时间戳转化成UTC标准时区的时间
dt3 = datetime.utcfromtimestamp(dts)
print(dt3) # 2020-04-15 04:30:00
# str转化成日期(格式化输出)
dt4 = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
print(dt4) # 2015-06-01 18:19:59
# 把日期转化成str(格式化输出)
str = now.strftime('%a, %b %d %H:%M:%S')
print(str) # Wed, Apr 29 12:49:52
# 日期加减,推算前几天、后几天的时刻
print(dt) # 2020-04-15 12:30:00
dt5 = dt + timedelta(hours=10)
print(dt5) # 2020-04-15 22:30:00
dt6 = dt - timedelta(days=1)
print(dt6) # 2020-04-14 12:30:00
dt7 = dt + timedelta(days=2,hours=10)
print(dt7) # 2020-04-17 22:30:00
2、collections
collections是Python内建的一个集合模块,提供了许多有用的集合类。
namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。
from collections import namedtuple
Circle = namedtuple('Circle', ['x','y','r'])
c = Circle(1,1,5)
print(c.x) # 1
print(c.y) # 1
print(c.r) # 5
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。
from collections import deque
q = deque([1,2,3,4,5])
q.append(6)
q.appendleft(7)
print(q) # deque([7, 1, 2, 3, 4, 5, 6])
q.pop()
q.popleft()
print(q) # deque([1, 2, 3, 4, 5])
Counter是一个简单的计数器,可以统计字符串中字符出现的个数。
from collections import Counter
c = Counter()
for ch in 'programming':
c[ch] = c[ch]+1
print(c)
# Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})
print(c['m']) # 2
print(c['r']) # 2
3、Base64
Base64是一种用64个字符来表示任意二进制数据的方法,常用于在URL、Cookie、网页中传输少量二进制数据。
import base64
data = base64.b64encode(b'binary\x00string')
print(data) # b'YmluYXJ5AHN0cmluZw=='
4、struct
struct模块可用于bytes字节数据和其他二进制数据类型的转换。
import struct
data = struct.pack('>I', 10240099)
print(data) # b'\x00\x9c@c'
5、hashlib
hashlib提供了常见的摘要算法,如MD5,SHA1等。什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。
import hashlib
md5 = hashlib.md5()
md5.update('hello world'.encode('utf-8'))
print(md5.hexdigest())
# 5eb63bbbe01eeed093cb22bb8f5acdc3
6、itertools
内建模块itertools提供了非常有用的用于操作迭代对象的函数,它们的返回值不是list,而是Iterator,只有用for循环迭代的时候才真正计算。
import itertools
# 从1开始,打印到100
natuals = itertools.count(1)
for n in natuals:
print(n)
if n >= 100:
break
7、urllib
urllib 提供的功能就是利用程序去执行各种HTTP请求,提供了一系列用于操作URL的功能。
from urllib import request
# 发起 GET 请求
with request.urlopen('https://cnodejs.org/api/v1/topics') as f:
data = f.read()
print(f.status) # 200
print(data) # 打印出响应数据
8、HTMLParser
如果我们要编写一个搜索引擎,第一步是用爬虫把目标网站的页面抓下来,第二步就是解析该HTML页面,看看里面的内容到底是新闻、图片还是视频。Python提供了HTMLParser来非常方便地解析HTML,可以把网页中的文本、图像等解析出来。
from html.parser import HTMLParser
from html.entities import name2codepoint
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print('<%s>' % tag)
def handle_endtag(self, tag):
print('</%s>' % tag)
def handle_startendtag(self, tag, attrs):
print('<%s/>' % tag)
def handle_data(self, data):
print(data)
def handle_comment(self, data):
print('<!--', data, '-->')
def handle_entityref(self, name):
print('&%s;' % name)
def handle_charref(self, name):
print('&#%s;' % name)
parser = MyHTMLParser()
parser.feed('''<html>
<head></head>
<body>
<p>Some <a href=\"#\">html</a> HTML tutorial...<br>END</p>
</body></html>''')
参考资源:
网友评论