今日内容总结

  • re模块补充说明

  • 正则起别名及分组机制

  • collections模块

  • time与datetime模块

  • random随机数模块

 

re模块补充说明

'''
findall默认是分组优先展示
正则表达式中如果有括号分组 那么在展示匹配结果的时候默认只演示括号正则表达式匹配的内容
也可以取消有限展示的机制
(?:) 括号前面加问号冒号
'''
'''
针对search和match有几个分组 group方法括号内最大就写几
'''

# 分组之后还可以给组起别名(findall无法使用)
res = re.search('a(?P<name1>b)(?P<name2>c)','abcabcabcabc')
print(res.group('name1'))  # b
print(res.group('name2'))  # c

collections模块

'''提供了更多的数据类型'''
# 1.具名元组
from collections import namedtuple

# 1.先产生一个元组对象模板
point = namedtuple('坐标',['x','y',])
# 2.创建诸多元组数据
p1 = point(1,2)
p2 = point(8,2)
print(p1,p2)  # 坐标(x=1, y=2) 坐标(x=8, y=2)
print(p1.x)  # 1
print(p2.y)  # 2
'''具名元组的使用场景也非常广泛 比如数学领域、娱乐领域等'''

# 2.双端队列
队列:先进先出 默认是只有一端能进另一端能出
   双端队列:两端都可以进出
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(223)  # 右边添加元素
print(q)  # deque([1, 2, 3, 223])
q.appendleft(435)  # 左边添加元素
print(q)  # deque([435, 1, 2, 3, 223])
q.pop()  # 右边弹出元素
q.popleft()  # 左边弹出元素

# 3.字典相关
正常的字典内部是无序的

# 有序字典
from collections import OrderedDict
d = OrderedDict([('a',1),('b',2),('c',3)])
print(d)  # OrderedDict([('a', 1), ('b', 2), ('c', 3)])
d['x'] = 1
d['y'] = 2
d['z'] = 3
print(d)  # OrderedDict([('a', 1), ('b', 2), ('c', 3), ('x', 1), ('y', 2), ('z', 3)])
print(d.keys())  # odict_keys(['a', 'b', 'c', 'x', 'y', 'z'])

# 4.计数器
统计字符串中所有字符出现的次数
res = 'asdafadfadfsd'
new_dict = {}
for i in res:
   if i not in new_dict:
       # 字符第一次出现 应该创建一个新的键值对
       new_dict[i] = 1
   else:
       new_dict[i] += 1
print(new_dict)  # {'a': 4, 's': 2, 'd': 4, 'f': 3}

使用collections 模块中的 Counter方法:
from collections import Counter
r = Counter(res)
print(r)  # {'a': 4, 's': 2, 'd': 4, 'f': 3}
print(r.get('a'))  # 可以当字典使用

time模块

# 1.常用方法
1.time.sleep(secs)
推迟指定的时间运行,单位为秒
2.time.time()
获取当前时间戳
   
# 2.三种用于表达时间的格式(彼此之间可以转换)
1.时间戳
   距离1970年1月1日0时0分0秒至此相差的秒数
  time.time()
   2.结构化时间
  该时间类型主要是给计算机看的
       time.localtime()
      tm_year(年)
           tm_mon(月) 1 - 12
           tm_mday(日) 1 - 31
           tm_hour(时) 0 - 23
           tm_min(分) 0 - 59
           tm_sec(秒) 0 - 60
           tm_wday(周) 0 - 6 (0表示周一)
           tm_yday(一年中的第几天) 1 - 366
           tm_isdst(是否时夏令时) 默认为0
3.格式化时间
人最容易接收的一种时间格式 2000/1/21 11:11:11
      time.strftime()
       '%Y-%m-%d %H:%M:%S' # 2022-03-29 20:31:22
               '%Y-%m-%d %X'  # 2022-03-29 20:31:22
         %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("2008-01-01","%Y-%m-%d")
   time.strptime("2008/01","%Y/%m") 前后必须一致
ps:UTC时间比我所在的区域时间早八个小时(时区划分)

datetime模块

#基本操作
import datetime
print(datetime.date.today())  # 2022-03-29
print(datetime.datetime.today())  # 2022-03-29 20:48:31.707633
'''
date 意思就是年月日
datetime 意思是年月日时分秒
'''
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   星期0-7

'''时间差'''
ctime = datetime.datetime.today()
time_tel = datetime.timedelta(days=66)
print(ctime)  # 2022-03-29 20:55:31.344814
print(ctime + time_tel)  # 2022-06-03 20:56:32.620305
print(ctime - time_tel)  # 2022-01-22 20:57:06.502581
"""
针对时间计算的公式
日期对象 = 日期对象 +/- timedelta对象
timedelta对象 = 日期对象 +/- 日期对象
"""
res = ctime + time_tel
print(res - ctime)  # 66 days, 0:00:00

random模块

'''别名:随机数模块'''
import random
# print(random.random()) # 随机产生一个0到1之间的小数
# print(random.uniform(1,3)) # 随机产生一个1到3之间的小数
# print(random.randint(1,5)) # 随机产生一个1到5之间的整数(包括1和5)
#
# list = [1,23,44,35,5,3]
# random.shuffle(list) # 随机打乱一个数据集合
#
# print(random.choice(list)) # 随机抽取一个元素
# print(random.sample(list,3)) # 随机指定个数抽样


 

 posted on 2022-03-29 21:14  鳗鱼的春天  阅读(133)  评论(0编辑  收藏  举报