Day20
总结
re模块补充说明
import re
ret = re.findall('a(b)c', 'abcabcabcabc')
print(ret) # ['b', 'b', 'b', 'b']
ret = re.findall('a(?:b)c', 'abcabcabcabc')
print(ret) # ['abc', 'abc', 'abc', 'abc']
ret = re.findall('(a)(b)(c)', 'abcabcabcabc')
print(ret) # [('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c')]
ret = re.findall('(?P<aaa>a)(b)(c)', 'abcabcabcabc')
print(ret) # [('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c')]
print(ret.group('aaa'))
'''
findall默认分组优先展示
正则不表达式中如果有括号分组,展示结果时默认只展示括号内正则表达式匹配到的内容
也可以通过括号前加问号冒号取消
'''
collections模块
具名元组(有名字的元组)
from collections import namedtuple
person = namedtuple('人','name age ')
p1 = person('jason', 20)
p2 = person('jack', 30)
print(p1, p2) # 人(name='jason', age=20) 人(name='jack', age=30)
print(p2.age) # 30
双端数列
队列:先进先出 默认只有一端进另外一端只能出
双端队列:两端都可以进或者出
import queue
q = queue.Queue(2) # 最多放两个元素
q.put(1)
q.put(2)
# q.put(3) # 如果队列满了 继续添加则原地等待
print(q.get()) # 1
print(q.get()) # 2
# print(q.get()) # 如果队列满了 继续获取则原地等待
from collections import deque
q = deque([1, 2, 3])
print(q)
q.append(4) # 右边添加元素
print(q)
q.appendleft(5) # 左边添加元素
print(q)
q.pop()
print(q) # 右边弹出(删除)元素
q.popleft() # 左边弹出(删除)元素
print(q)
有序字典
正常字典都是无序的
from collections import OrderedDict
dic = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(dic) # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
dic['d'] = 4
dic['e'] = 5
dic['f'] = 6
print(dic) # OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6)])
计数器
统计字符串中字符的个数
from collections import Counter
res = 'aabbcddeee'
r = Counter(res)
print(r) # Counter({'e': 3, 'a': 2, 'b': 2, 'd': 2, 'c': 1})
print(r.get('a')) # 2
print(r.get('b')) # 2
print(r.get('c')) # 1
time模块
常用方法
# 推迟运行的时间(单位:秒)
time.sleep(5)
# 获取当前时间戳
time.time()
时间的格式表示方法
1.时间戳
time.time() # 1648548412.6958575
2.结构化时间
# 主要给计算机识别,人看起来不方便
time.localtime() # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)
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.格式化时间
# 肉眼看起来最方便
time.strftime()
%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 当前时区的名称
%% %号本身
时间类型的转换
时间戳<=>结构化时间
import time
print(time.time())
# 时间戳和结构化时间转换
print(time.localtime(1648552728.699097)) # 将时间戳转化为结构化时间
# time.struct_time(tm_year=2022, tm_mon=3, tm_mday=29, tm_hour=19, tm_min=18, tm_sec=48, tm_wday=1, tm_yday=88, tm_isdst=0)
print(time.mktime(time.localtime())) # 1648552766.0 mktime(t) : 将一个struct_time转化为时间戳。
结构化时间<=>格式化时间
# 结构化时间和格式化时间转换
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # 将结构化时间转化为格式化时间
# 2022-03-29 19:19:26
print(time.strptime('2022-03-29 19:19:26', '%Y-%m-%d %X')) # 将格式化时间转化为结构化时间
# time.struct_time(tm_year=2022, tm_mon=3, tm_mday=29, tm_hour=19, tm_min=19, tm_sec=26, tm_wday=1, tm_yday=88, tm_isdst=-1)
datetime模块
import datetime
print(datetime.date.today()) # 2022-03-29
print(datetime.datetime.today()) # 2022-03-29 19:30:27.502270
res = datetime.date.today()
print(res.year) # 2022
print(res.month) # 3
print(res.day) # 29
print(res.weekday()) # 1 星期0-6
print(res.isoweekday()) # 2 星期1-7
时间计算的公式
日期对象 = 日期对象 +/- timedelta对象
timedelta对象 = 日期对象 +/- 日期对象
random模块
import random
print(random.random()) # 随机产生一个0到1之间的小数 0.21309266104454927
print(random.uniform(2,4)) # 随机产生一个2到4之间的小数 2.011189729021157
print(random.randint(0,9)) # 随机产生一个0到9之间的整数(包含0和9) 0
l1 = ['特等奖', '一等奖', '二等奖', '三等奖']
print(random.choice(l1)) # 随机抽取一个 特等奖
print(random.sample(l1, 3)) # 随机抽多个 ['二等奖', '三等奖', '一等奖']
今天也有好多要记的知识,好好记吧。。。想吃米饭的第一天
:

浙公网安备 33010602011771号