9.28 包/time/datetime/random/hashlib/hmac/typing/requests/re模块

包是拿来导入的,也属于模块.
包含有__init__.py的文件;导包就是导入__init__.py文件
包一定是被当做模块文件导入,模块的搜索路径以执行文件路径为准.

包的作用

当模块内部函数过多,为了方便管理模块,把一个模块划分成多个模块,但是又不能改变导入方式,就把模块放入一个包内.

time模块

提供了三种不同类型的时间,三种不同类型时间可以转换

time.time()

时间戳

time.sleep(1)

睡眠1秒

datetime模块

可以进行时间的加减

now = datetimr.datetime.now() ##计算机当前时间
print(now + datetime.timedelta(3)) ##默认加三天
print(now + datetime.timedelta(weeks=3)) ##加三周
print(now + datetime.timedelta(hours=3)) ##加三小时
print(now - datetime.timedelta(hours=3)) ##减三小时
print(now + datetime.timedelta(hours=-3)) ##减三小时
print(now.replace(year=1949,month=10,day=1,hour=10,minute=1,second=0,microsecond=0)) ##1949-10-01 10:01:00 00(年月日  时分秒  毫秒)

random模块

产生随机数

掌握

print(random.random()) ##默认0-1的随机数不包括0和1
print(random.random(1,3)) ##随机生成1-3的整数
lt = [1,2,3]
random.shuffle(lt)
print(lt) ##对lt进行乱序
print(random.choice(lt)) ##lt中随机选一个数

了解

print(random.sample([1,'a','b',2,3],n)) ##随机选列表中的n个数据

hashlib模块和hmac模块

hashlib是对字符加密
hmac是对字符加密,并加上密钥

typing模块

与函数连用,控制函数的参数的数据类型,提供了基础数据类型外的数据类型

requests模块

模拟浏览器对url发送请求,拿到数据
url:是一个特定的网址,永不重复

re模块

去字符串,找符合某种特点的字符串

元字符

^

以..开头

s = 'abcdab'
res = re.findall('^ab',s)
print(res) ##['ab']找到第一个就不找了
res = re.findall('^bc',s)
print(res) ##[]开头对不上就返回空

$

以..结尾

s = 'abcdaba'
res = re.findall('ba$',s)
print(res) ##['ba']符合就返回,不符合就返回空

\d

数字

s = 'abc123abc123'
res = re.findall('\d',s)
print(res) ##['1','2','3','1','2','3']只返回数字

\w

返回非空,数字,字母,下划线等

s = 'abc 233 dgv 11'
res = re.findall('\w',s)
print(res) ##['a','b',...,'1']除了空格,空等都以单个字符返回

\s

返回空格,\t,\n

s = """abc 233
dgv 11"""
res = re.findall('\s',s)
print(res) ##[' ','\n',' ']返回空格,\t,\n

\D

非数字

s = 'abc123abc1_3'
res = re.findall('\D',s)
print(res) ##['a','b',...,'_']返回除数字的字符

+

前面的一个字符至少一个

s = 'abcddd abcd abc'
res = re.findall('abcd+',s)
print(res) ##['abcddd','abcd']

?

前面的字符0-1个

s = 'abcddd abcd abc'
res = re.findall('abcd?',s)
print(res) ##['abcd','abcd','abc']

*
前面的一个字符至少0个

s = 'abcddd abcd abc bc'
res = re.findall('abcd*',s)
print(res) ##['abcddd','abcd','abc']

.

任意字符

s = 'abc12bca'
res = re.findall('abc.',s)
print(res) ##['abc1']符合.就返回所占位的字符,无或不符合就返回空

.* 贪婪模式

.(任意字符)*(0-无穷个)

s = 'abcdefgbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgggg'
res = re.findall('a.*g',s)
print(res) ##['abcdefgbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgggg']

.?非贪婪模式
.(任意字符)
(0-无穷个)?(让其进入非贪婪模式)

s = 'abcdefgbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbgggg'
res = re.findall('a.*?g',s)
print(res) ##['abcdefg']

re.S(*****)

会让.匹配换行符

match

从头开始找,找到就不找了,找不到就报错

s = 'ab abcddd abc'
res = re.search('abcd*', s)
print(res.group()) ##报错 

整个字符中找,找到就不找了,找不到就报错

s = 'ab abcddd abc'
res = re.search('abcd*', s)
print(res.group()) ##abcddd 

分组

只要括号里的

s = 'abc abcd abcdd'
res = re.findall('a(.)c(d)',s)
print(res) ##[('b','d'),('b','d')]

有名分组

只要括号里的,以字典形式

s = 'abc abcd abcdd'
res = re.search('a(?P<name>.)c(?P<name2>d)', s)
print(res.group()) ##{'name':'b','name2':'d'}
上一篇:9.28 模块


下一篇:Python-包与常用模块(2)