re模块补充与其他模块介绍
注:昨日写了re单个模块几个重要的点需要补充

一.re模块补充
1.findall独有的优先级别展示
res = re.findall('abc', 'abcabcabcabc')
print(res) # ['abc','abc','abc','abc']
# 正则表达式
2.res = re.findall('a(b)c', 'abcabcabcabc')
print(res) # ['b', 'b', 'b', 'b']
# 正则表达式优先分组()
3.res = re.findall('a(f:b)c', 'abcabcabcabc')
print(res) # ['abc','abc','abc','abc']
# 正则表达式取消优先展示(f:)
4res = re.findall('(a)(b)(c)', 'abcabcabcabc')
print(res) # [('a','b','c'),('a','b','c'),('a','b','c'),('a','b','c')]
# 正则表达式三个值都优先后会出现列表套元组
"""不能通过findall.来进行group取值"""
1.可以通过group取值
1.res = re.search('(a)(b)(c)', 'abcabcabcabc')
2.res = re.match('(a)(b)(c)', 'abcabcabcabc')
match search
print(res.group(0)) #abc
print(res.group(1)) #a
print(res.group(2)) #b
print(res.group(3)) #c
"""有几个值可以取几个值"""
还可以通过改名字来进行引用取值
1.res = re.search('(a)(?P<name>b)(c)', 'abcabcabcabc')
print(res.group('name')) #b

二.(collections)模块
在原来dict list tuple set 增加更多的数据类型
1.具名元组(有名字的元组):namedtuple
2.双端对列(多进多出):queue
3.有序字典(原来的字典是无序的):OrderedDict
4.计数器(继承了字典):Counter
1.具名元组
通过:from collections import namedtuple # 指名道姓
ser = namedtuple('名字',['x','y'])
point = ser(1, 2) 结果:#名字 (x=1, y=2)
print(point.x) 结果:#1
2.双端队列
import queue # 队列
q = queue.Queue(3) # 输入的值对应就是进去的值和输出的值
q.put(123)
q.put(321) # put 存放
q.put(555)
print(q.get()) # 获取
print(q.get())
print(q.get())
# 结果 123,321, 555 (先进先出)
------------------------
from collections import deque
q = deque([1,2,3,4])
print(q)
# 结果 ([1,2,3,4])
q.append(444) # 尾部添加
q.appendleft(555) # 头部添加
print(q)
# 结果 ([555,1,2,3,4,444])
q.pop() # 尾部弹出
q.popleft() # 头部弹出
print(q)
# 结果 ([1,2,3,4])
3.有序字典
1.字典是无序的 K:V
2.有序字典
from collections import OrderedDict
ser = OrderedDict([(1,2), (3,4), (5,6)])
ser['x'] = 222 # 添加新的键值对
ser['c'] = 111 # 添加新的键值对
# 结果([(1,2), (3,4), (5,6),(x,222),(c,111)])
OrderedDict会记住字典的排列顺序
不会改变顺序 如果添加的话也是按照顺序来添加的
2.默认字典
from collections import defaultdict
defaultdict 默认所有的值为列表(list)
3.1小例题
有如下值集合 [11,22,33,44,55,67,77,88,99,999],
将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
1.正常
l1 = [11,22,33,44,55,67,77,88,99,999]
new_dict = {'k1':[],'k2':[]}
for i in l1:
if i > 66:
new_dict['k1'].append(i)
else:
new_dict['k2'].append(i)
print(new_dict)
2.调用defaultdict默认字典
values = [11, 22, 33,44,55,67,77,88,99,90]
my_dict = defaultdict(list)
for value in values:
if value>66:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value)

4.计数器
1.正常调用
res = 'abcdeabcdabcaba'
"""统计字符串中所有字符出现的次数"""
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': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}
2.调用模块Counter
from collections import Counter
r = Counter(res)
print(r)
# 结果{'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}
还可以单个取值
print(r.get('a')) # 当字典使用

三.时间模块time
1.时间模块常用方法
time.sleep(sece)推迟运行时间,单位是秒
time.time() 时间戳
2.表示时间各种的三种用法(可以彼此转换)
1.时间戳
time.time
距离1970年1月1日0时0分0秒至此相差的秒数
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.格式化时间
人最容易接受的时间格式
time.strftime()
'%Y-%m-%d %H:%M:%S'
'%Y-%m-%d %X'
2022/3/29/ 20:21:50

3.1更多的格式化时间
%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 当前时区的名称
%% %号本身
3.2时间类型转换
格式化时间<==> 结构化时间<==>时间戳

四.模块datetime
import datetime
print(datetime.date.today()) # 2022-03-29
# 今日时间
print(datetime.datetime.today()) # 2022-03-29 20:46:33.665519
1.date:年月日
2.datetime: 年月日 时分秒
4.1时间差
import datetime
ctime = datetime.datetime.today()
time_tel = datetime.timedelta(days=1) # days 天数
print(ctime) # 本地时间
print(ctime + time_tel) # 一天以后
print(ctime - time_tel) # 一天以前
结果分别为:
2022-03-29 20:49:29.333389
2022-03-30 20:49:29.333389
2022-03-28 20:49:29.333389
"""
针对时间计算的公式
日期对象 = 日期对象 +/- timedelta对象
timedelta对象 = 日期对象 +/- 日期对象
"""

五.随机模块random
import random
1.random.random()) # 随机产生一个0到1之间的小数
2.random.uniform(2,4)) # 随机产生一个2到4之间的小数
3.random.randint(0,9)) # 随机产生一个0到9之间的整数(包含0和9)
4.random.shuffle # 随机打乱一个数据集合
5.random.choice # 随机在(数据集合)中抽取一个
6.random.sample(%s,2) # 随机指定个数抽取
re模块补充与其他模块介绍的更多相关文章
- python day 8: re模块补充,导入模块,hashlib模块,字符串格式化,模块知识拾遗,requests模块初识
目录 python day 8 1. re模块补充 2. import模块导入 3. os模块 4. hashlib模块 5. 字符串格式:百分号法与format方法 6. 模块知识拾遗 7. req ...
- os模块补充以及序列化模块
os模块补充以及序列化模块 一.os模块的补充 1.os.path.abspath 能把存在的相对路径的绝对路径显示出来 path = os.path.abspath("连达day19. ...
- python之re模块补充和其他模块(collection、time、queue、datetime、random)
目录 re模块补充说明 collections模块 queue模块 time模块 datetime模块 random模块 re模块补充说明 在正则表达式中,'()'的作用是进行分组,但是在re模块中, ...
- 文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象
本篇内容: 常用模块的补充 python面相对象 一.常用模块补充 1.configparser模块 configparser 用于处理特定格式的文件,起内部是调用open()来实现的,他的使用场景是 ...
- python模块补充
一.模块补充 configparser 1.基本的读取配置文件 -read(filename) 直接读取ini文件内容 -sections() 得到所有的section,并以列表的形式返回 -opti ...
- Python中模块之os的功能介绍
Python中模块之os的功能介绍 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module ...
- Python中模块之copy的功能介绍
模块之copy的功能介绍 copy主要分两种: 1.浅拷贝 2.深拷贝 赋值: 在python中赋值算特殊的拷贝,其实赋值可以理解为同一个对象有两个名字,所以当其中一个发生变化,另一个也跟着会变化. ...
- Python中模块之queue的功能介绍
模块之queue的功能介绍 队列的分类: 队列主要要分为两种 1.双向队列 2.单项队列 1. 单项队列 创建单项队列 格式:queue.Queue(obj) 例如:que = queue.Queue ...
- python_9(模块补充)
第1章 re模块补充 1.1 贪婪匹配:回溯算法 1.2 .*?的用法 1.3 例:分组<name>取值 1.4 匹配整数删除小数 1.5 正则测试地址 第2章 重点模块 2.1 hash ...
随机推荐
- Django基础八之认证模块---auth
Django基础八之认证模块---auth 目录 Django基础八之认证模块---auth 1. auth介绍 2. autho常用操作 2.1 创建用户 2.2 验证用户 2.3 验证用户是否登录 ...
- Linux kernel serial_ir_init_module()释放后重利用漏洞
受影响系统:Linux kernel < 5.1.6描述:-------------------------------------------------------------------- ...
- Java基础—String构造方法
Java基础--String构造方法 public String(): 创建一个空表字符串对象,不包含任何内容 public String(char[]chs): 根据字符数组的内容,来创建字符串对象 ...
- CentOS 7 源码安装 Zabbix 6.0
Zabbix 主要有以下几个组件组成: Zabbix Server:Zabbix 服务端,是 Zabbix 的核心组件.它负责接收监控数据并触发告警,还负责将监控数据持久化到数据库中. Zabbix ...
- [SniperOJ](web)图书管理系统 注入 源码泄露
0x00 题目概况 题目地址:http://www.sniperoj.cn:10000/ 这是一道注入题,存在git源码泄露,使用githack(freebuf有工具介绍)把源码脱下来,进行审计,然后 ...
- Flash XSS
示例: 创建一个测试flash,代码如下,导出swf文件 //取m参数 var m=_root.m; //取showInfo参数 var showInfo=_root.showInfo; //调用ht ...
- 实习项目1-串口IP升级调试
设计目标:设计一个串口IP,要求1:输入时钟频率任意,如0-400M时钟频率:要求2:波特率超过常见的115200,要求达到4M. 设计核心思路:波特率计算公式,divp10x = (10 * fsy ...
- 06分频计数器之LED闪烁1
一设计功能是:让LED灯每1秒亮一次,再灭一秒,闪烁时间周期为2秒. 二分频的介绍: (一)设计方式:IP核和自己动手写. (二)对于分频的构成:一个是计数器,还有时钟翻转.方法一是计满整个周期,一半 ...
- BUAA_DS_北航数据结构:输出全排列
输入一个数 \(n\),输出 \(1\sim n\) 的所有全排列,每个排列占一行,每个字符保留 \(5\) 个场宽.勤奋的同学一定已经开始打表了是吧. 说是能做肯定不是骗大家,那怎么做呢~ 其实回溯 ...
- 通过rem自适应屏幕尺寸
通过rem自适应屏幕尺寸 常用的前端单位 px px就是pixel的缩写,设备分辨率,物理像素 pt pt就是point的缩写,逻辑分辨率,逻辑像素 em 参考物是父元素的font-size,具有继承 ...