collections、time、datetime、random模块
今日内容概要
1.re模块的其他知识
2.正则起别名与分组机制
3.collections模块
4.time与datetime模块
5.random随机数模块
今日内容详细
re模块的其他知识
import re
res=re.findall('a(b)c','abcabcabcabc')
print(res) # ['b', 'b', 'b', 'b']
res1=re.findall('a(?:b)c','abcabcabcabc')
print(res1) # ['abc', 'abc', 'abc', 'abc']
res2 = re.findall('(a)(b)(c)','abcabcabcabc')
print(res2) # [('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c')]
res3 = re.findall('(?P<aaa>a)(b)(c)','abcabcabcabc')
print(res3) # [('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c')]
"""
findall默认是分组优先展示
正则表达式中如果有括号分组 那么在展示匹配结果的时候
默认只演示括号内正则表达式匹配到的内容
也可以取消分组有限展示的机制
(?:) 括号前面加问号冒号
"""
"""
可以通过索引的方式单独获取分组内匹配到的数据
"""
ret = re.search('a(b)c', 'abcabcabcabc')
print(ret.group()) # abc
print(ret.group(0)) # abc
print(ret.group(1)) # b
ret = re.search('a(b)(c)', 'abcabcabcabc')
print(ret.group()) # abc
print(ret.group(0)) # abc
print(ret.group(1)) # b
print(ret.group(2)) # c
'''
针对search和match有几个分组 group方法括号内最大就可以写几
'''
# 分组之后还可以给组起别名
ret = re.search('a(?P<name1>b)(?P<name2>c)', 'abcabcabcabc')
print(ret.group('name1')) # b
print(ret.group('name2')) # c
collections 模块
collection模块 提供了更多的数据类型
1.具名元组
from collections import namedtuple
# 先产生一个元组对象模板
point = namedtuple('坐标',['x','y'])
# 创建诸多元组数据
p1 = point(1,2)
p2 = point(10,8)
print(p1,p2) # 坐标(x=1, y=2) 坐标(x=10, y=8)
print(p1.x) # 1
print(p1.y) # 2
person = namedtuple('人物','name age gender')
p1 = person('jason',18,'male')
p2 = person('kevin',28,'female')
print(p1,p2) # 人物(name='jason', age=18, gender='male') 人物(name='kevin', age=28, gender='female')
print(p1.name,p1.age) # jason 18
"""
具名元组的使用场景也非常的广泛 比如数学领域、娱乐领域等
"""
card = namedtuple('扑克牌', ['花色', '点数'])
c1 = card('黑桃♠', 'A')
c2 = card('黑梅♣', 'K')
c3 = card('红心❤', 'A')
print(c1, c2, c3)
print(c1.点数)
2.双端队列
队列:先进先出 默认是只有一端只能进另一端
双端队列:两端都可以进出
import queue
q = queue.Queue(3) # 最大只能放三个元素
存放元素
q.put(123)
q.put(321)
q.put(222)
q.put(444) # 如果队列满了 继续添加则原地等待
获取元素
print(q.get()) # 123
print(q.get()) # 321
print(q.get()) # 222
print(q.get()) # 如果队列空了 继续获取则原地等待
from collections import deque
q = deque([1,2,3])
print(q)
q.append(444) # 右边添加元素
print(q)
q.appendleft(666) # 左边添加元素
print(q)
q.pop() # 右边弹出元素
q.popleft() # 左边弹出元素
3.字典相关
正常的字典内部都是无序的
d1 = dict([('name','jason'),('pwd',123),('hobby','study')])
# print(d1) # {'pwd': 123, 'name': 'jason', 'hobby': 'study'}
print(d1.keys())
# 有序字典