re模块补充说明
import re
ret = re.findall('a(b)c', 'abcacbacb')
print(ret)
ret = re.findall('a(?:b)c', 'abcabcabc')
print(ret)
ret = re.findall('(a)(b)(c)', 'abcabcabcbabc')
print(ret)
"""
findall默认是分组优先显示
正则表达式中如果有括号分组 那么在展示匹配结果的时候
默认只演示括号里正则表达式匹配的内容
也可以取消机制 (?:)就可以取消
"""
ret = re.search('a(b)c', 'abcacbacbacbacb')
print(ret.group())
print(ret.group(0))
print(ret.group(1))
ret = re.search('a(b)(c)', 'abcabcabcabc')
print(ret.group(0))
print(ret.group(1))
print(ret.group(2))
'''针对search和match有几个分组 group方法括号内最大就可以写几'''
ret = re.search('a(?P<name1>b)(?P<name2>c)', 'abcabcabcabc')
print(ret.group('name1'))
print(ret.group('name2'))


collections模块
'''提供更多的数据类型'''
1.具名元祖
from collections import namedtuple
point = namedtuple('坐标', ['x', 'y'])
p1 = point(2, 33)
p2 = point(55, 6)
print(p1, p2)
print(p1.x)
print(p1.y)
"""具名元组的使用场景也非常的广泛 比如数学领域、娱乐领域等"""
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(12)
q.put(13)
q.put(14)
q.put(15)
print(q.get())
print(q.get())
print(q.get())
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)
print(d1.keys())
from collections import OrderedDict
d2 = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(d2)
d2['x'] = 111
d2['y'] = 222
d2['z'] = 333
print(d2)
print(d2.keys())
"""
有如下值集合 [1, 2, 3, 4, 5, 6, 7, 8],
将所有大于 6 的值保存至字典的第一个key中,将小于 6 的值保存至第二个key的值中。
"""
from collections import defaultdict
values = [1, 2, 3, 4, 5, 6, 7, 8]
my_dict = defaultdict(list)
for value in values:
if value > 6:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value)

4.计数器
'''
统计字符串中所有字符出现的次数
{'a':3,'b':5...}
'''
res = 'abcacbcbcbcbaabbccbb'
from collections import Counter
r = Counter(res)
print(r)

time模块
1.time.sleep(secs)
推迟指定的时间运行,单位为秒
ps:该方法贯穿前后(基础、后期)
2.time.time()
获取当前时间戳
1.时间戳
距离1970年1月1日0时0分0秒至此相差的秒数
time.time()
2.结构化时间
该时间类型主要是给计算机看的,人看起来不太方便
time.localtime()
0 tm_year(年) 比如2011
1 tm_mon(月) 1 - 12
2 tm_mday(日) 1 - 31
3 tm_hour(时) 0 - 23
4 tm_min(分) 0 - 59
5 tm_sec(秒) 0 - 60
6 tm_wday(weekday) 0 - 6(0表示周一)
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为0
3.格式化时间
人最容易接收的一种时间格式 2000/1/21 11:11:11
time.strftime()
'%Y-%m-%d %H:%M:%S'
'%Y-%m-%d %X'
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
时间类型的转换
格式化时间 <==> 结构化时间 <==> 时间戳
gmtime
localtime
strftime
strptime
time.strptime("2017-03-16","%Y-%m-%d")
time.strptime("2017/03","%Y/%m") 前后必须一致
ps:UTC时间比我所在的区域时间早八个小时(时区划分)
datetime模块
import datetime
print(datetime.date.today())
print(datetime.datetime.today())
"""
date 意思就是年月日
datetime 意思就是年月日 时分秒
ps:后期很多时间相关的操作都是跟date和time有关系
"""
res = datetime.date.today()
print(res.year)
print(res.month)
print(res.day)
print(res.weekday())
print(res.isoweekday())
时间差
ctime = datetime.datetime.today()
time_tel = datetime.timedelta(days=4)
"""
针对时间计算的公式
日期对象 = 日期对象 +/- timedelta对象
timedelta对象 = 日期对象 +/- 日期对象
"""
res = ctime + time_tel
print(res - ctime)
random模块
'''别名>>>:随机数模块'''
import random
ll = ['如花','C老师','R老师','J老师','M老师','张飞','龙龙']
print(random.sample(ll, 2))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人