十一、内置模块
一、json & pickle
1. 什么是序列化
序列化就是将内存中的数据类型转成另外一种格式
即:
字典---------序列化--------->其他的格式--------------->存到硬盘
硬盘---读取---->其他格式----------反序列化-------->字典
2. 为什么要序列化
1. 持久保存程序的运行状态
2. 数据的跨平台交互
3. 如何序列化
json:
优点: 这种格式是一种通用的格式,所有编程语言都能识别
缺点: 不能识别所有python类型
强调:json格式不能识别单引号
pickle
优点: 能识别所有python类型
缺点: 只能被python这门编程语言识别
二、time与datatime
# 时间分为三种格式:
import time
1. 时间戳
print(time.time())
2. 格式化的字符
print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
3. 结构化的时间对象
print(time.localtime())
print(time.localtime().tm_hour)
print(time.localtime().tm_wday)
print(time.localtime().tm_yday)
print(time.gmtime())
时间转换
时间戳---->struct_time------->格式化的字符串
struct_time=time.localtime(123123)
print(struct_time)
print(time.strftime('%Y-%m-%d',struct_time))
格式化的字符串---->struct_time------->时间戳
struct_time=time.strptime('2017-03-11','%Y-%m-%d')
print(struct_time)
print(time.mktime(struct_time))
三、random模块
print(random.random())
print(random.randint(1,3))
print(random.randrange(1,3))
print(random.uniform(1,3))
print(random.choice([1,'a','c']))
print(random.sample([1,'a','c'],2))
item=[1,3,5,7,9]
random.shuffle(item)
print(item)
随机验证码:
def make_code(max_size=5):
res=''
for i in range(max_size):
num=str(random.randint(0,9))
alp=chr(random.randint(65,90))
res+=random.choice([num,alp])
return res
print(make_code(10))
re模块
一:什么是正则?
常用匹配模式
模式 | 描述 |
---|---|
\w | 匹配字母数字以及下划线 |
\W | 匹配非字母数字下划线 |
\s | 匹配任意空白字符 |
\S | 匹配任意非空白字符 |
\d | 匹配任意数字,等价于【0-9】 |
\D | 匹配任意非数字 |
\A | 匹配字符串开始 |
\Z | 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串 |
\z | 匹配字符串结束 |
\G | 匹配最后匹配完成的位置 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的末尾 |
. | 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符 |
[...] | 用来表示一组字符,单独列出:[amk]匹配'a','m'或'k' |
[^...] | 不在[]中的字符 |
* | 匹配0个或多个表达式 |
+ | 匹配1个或多个表达式 |
? | 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 |
{n} | 精确匹配n个前面表达式 |
{n,m} | 匹配n到m个由前面的正则表达式定义的片段,贪婪方式 |
a|b | 匹配a或b |
() | 匹配括号内的表达式 |
hashlib模块
1. 什么是hash
hash是一种算法,该算法接受一系列的数据,经过运算会得到一个hash值
hash值具备三大特性:
1. 只要传入的内容一样,那么得到的hash值一定是一样
2. 只要采用hash算法固定,无论传入的内容多大,hash值的长度是固定
3. hash值不可逆,即不能通过hash值逆推出内容
2. 为何要用hash
特性1+2=>文件完整性校验
m=hashlib.md5()
m.update('你好'.encode('utf-8'))
m.update('hello'.encode('utf-8'))
print(m.hexdigest())