脚本宝典收集整理的这篇文章主要介绍了常用内置模块,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
import re
res = re.findall('abc', 'adcabcabcacc')
res1 = re.findall('(a)bc', 'adcabcabcacc')
res2 = re.findall('(a)(b)c', 'adcabcabcacc')
res3 = re.findall('(a)(b)(c)', 'adcabcabcacc')
PRint(res) # ['abc', 'abc']
print(res1) # ['a', 'a']
print(res2) # [('a', 'b'), ('a', 'b')]
print(res3) # [('a', 'b', 'c'), ('a', 'b', 'c')]
re 模块里的findall方法 1. findall()里面的正则表达式可以加小括号进行分组,小括号内的内容优先显示 2. 如果含有多个分组的话,有几个将几个分组组合成元组类型数据元素,列表输出 3. 不过这里需要注意,先找到的仍然是正则表达式里面所要筛选的组合,会在找到的组合进行拆分优先显示而已 解释:也就是上述代码依然会先找'abc'字符组,只不过会将找到的数据进行拆分优先显示
import re
res = re.findall('(?:a)bc', 'adcabcabcacc')
print(res) # ['abc', 'abc']
findall方法里的分组默认优先显示,不过我们可以在分组内的左边加上?:
来解除分组的优先显示
import re
# search 方法
res = re.search('(a)b(c)', 'adcabcabcacc') # search只匹配一个结果
print(res.group()) # 通过group方法进行取分组数据,默认的参数是0,不取分组,取全部结果 abc
print(res.group(0)) # 与无参相同 abc
print(res.group(1)) # 取正则匹配结果的第1个分组 a
print(res.group(2)) # 取正则匹配结果的第2个分组 c
print(res.group(3)) # 第三分组不存在,取不到会直接报错
# match 方法
res = re.match('(a)b(c)', 'abcabcabcacc') # search只匹配一个位于开头位置的结果
print(res.group()) # 通过group方法进行取分组数据,默认的参数是0,不取分组,取全部结果 abc
print(res.group(0)) # 与无参相同 abc
print(res.group(1)) # 取正则匹配结果的第1个分组 a
print(res.group(2)) # 取正则匹配结果的第2个分组 c
print(res.group(3)) # 第三分组不存在,取不到会直接报错
对于search和match方法所匹配到的结果 1. 在正则表达式里如果存在分组的时候,可以通过group方法进行取值 2. group后面的参数最大值与正则表达式里的分组个数一样 3. group取分组匹配数据的时候,默认参数是0的时候,取正则匹配数据,而不是分组匹配数据
import re
res = re.search('(?P<namea>a)bc', 'adcabcabcacc')
print(res.group('namea')) # 用group方法跟命的名,可以取该分组内数据 a
res = re.match('(?P<namea>a)(?P<nameb>b)c', 'abcabcabcacc')
print(res.group('nameb')) # 用group方法跟命的名,可以取该分组内数据 b
1. 给分组内数据命名只需要在分组内的前部加上?:<名字>
即可
2. 后续访问该数据就可以用group方法加该名字
作用:提供更多数据类型
From collections import namedtuple
coordinate = namedtuple('位置', ['x', 'y', 'z']) # 生成元组对象模板
coor1 = coordinate(1, 2, 3) # 用元组模板创建多个元组数据
coor2 = coordinate(1, 1, 3)
coor3 = coordinate(2, 2, 3)
coor4 = coordinate(3, 3, 3)
print(coor1, coor2, coor3, coor4) # 位置(x=1, y=2, z=3) 位置(x=1, y=1, z=3) 位置(x=2, y=2, z=3) 位置(x=3, y=3, z=3)
print(coor1.x, coor2.y, coor3.x, coor4.z) # 可以通过点名的方式查看元组内的数据
1. 之前的学习过程中讲过队列与堆栈。队列属于先进先出的数据类型,也就是类似于排队,一端进一端出 2. 双端队列也就是指两端都可以进出的队列
import queue
que = queue.Queue(2) # 队列内最多只能放两个元素
# 添加元素
que.put('oliver')
que.put('kevin')
# que.put('jason') # 队列排到最大容量时,会停止到这里
# 获取元素
print(que.get()) # oliver 一次取一个元素
print(que.get()) # kevin
# print(que.get()) # 队列取空以后再取元素会停止到这里不往下执行
# 内部结构
que.put('oliver')
print(que.get()) # oliver
que.put('kevin')
print(que.get()) # kevin
que.put('jason')
print(que.get()) # jason
que.put('justin')
print(que.get()) # justin
que.put('henry')
print(que.get()) # henry
# 典型的放一个取一个,这样的话,队列不会填满,也就不会停止执行
# 队列的左右添加删减操作
# from collections import deque
#
# q = deque(['oliver', 'kevin', 'jason', 'henry'])
# print(q)
# q.apPEnd('帅气逼人') # 尾部添加元素
# print(q) # deque(['oliver', 'kevin', 'jason', 'henry', '帅气逼人'])
# q.appendleft('英俊潇洒') # 首部添加元素
# print(q) # deque(['英俊潇洒', 'oliver', 'kevin', 'jason', 'henry', '帅气逼人'])
# q.pop() # 尾部弹出元素
# print(q) # deque(['英俊潇洒', 'oliver', 'kevin', 'jason', 'henry'])
# q.popleft() # 首部弹出元素
# print(q) # deque(['oliver', 'kevin', 'jason', 'henry'])
from collections import OrderedDict
dict_name = OrderedDict([('name', 'oliver'), ('age', 23), ('gender', 'male')])
print(dict_name) # OrderedDict([('name', 'oliver'), ('age', 23), ('gender', 'male')])
print(dict_name['name']) # oliver
# 值的修改
dict_name['name'] = 'jerry'
dict_name['age'] = 18
dict_name['gender'] = 'female'
dict_name['hobby'] = 'music' # 与字典相同,没有键的时候直接添加
print(dict_name) # OrderedDict([('name', 'jerry'), ('age', 18), ('gender', 'female'), ('hobby', 'music')])
print(dict_name.keys()) # odict_keys(['name', 'age', 'gender', 'hobby'])
print(dict_name.values()) # odict_values(['jerry', 18, 'female', 'music'])
print(dict_name.ITems()) # OrderedDict([('name', 'jerry'), ('age', 18), ('gender', 'female'), ('hobby', 'music')])
对于常用的字典的内置方法,有序字典都是可以调用的
from collections import defaultdict
list1 = [11, 22, 33, 44, 55, 66, 77, 88, 99, 111]
my_dict = defaultdict(list) # 默认字典里的值是空列表
for i in list1:
if i < 50:
my_dict['liTTLe'].append(i) # 添加进键为'little'的值(列表)里
else:
my_dict['large'].append(i) # 添加进键为'large'的值(列表)里
print(my_dict) # defaultdict(<class 'list'>, {'little': [11, 22, 33, 44], 'large': [55, 66, 77, 88, 99, 111]})
给字典的值提供了默认值
统计字符串里字符出现的次数
# for循环实现统计字符串str1所有字符出现的次数
str1 = 'wdadwsdawdasdwadadsawdawdSSDawdasdwwsdawdsdwdasdawsdwdas'
dict1 = {}
for i in str1:
if i not in dict1:
dict1[i] = 1
else:
dict1[i] += 1
print(dict1) # {'w': 13, 'd': 19, 'a': 13, 's': 11}
# Counter实现统计字符串str1所有字符出现的次数
str1 = 'wdadwsdawdasdwadadsawdawdssdawdasdwwsdawdsdwdasdawsdwdas'
from collections import Counter
res = Counter(str1) # 统计字符串里字符出现的个数
print(res) # Counter({'d': 19, 'w': 13, 'a': 13, 's': 11})
print(res.get('s')) # 获取s对应的出现次数(值)11
import time
time.time() # 获取时间戳 1648574515.9904044
time.sleep() # 休眠时间:执行到该语句的时候,会在此处停留10秒
time.time() # 获取休眠时间后的时间戳 1648574525.990836
1. 获取时间戳 time.time()
距离1970年1月1日到程序运行时相差的时间差
2. 结构化时间 time.localtime()
该时间类型主要是给计算机看的,是不适合人看的
表示方式 | 意义 | eg |
---|---|---|
tm_year | 年 | 2011 |
tm_mon | 月 | 01-12 |
tm_mday | 日 | 01-31 |
tm_hour | 时(24小时制) | 00-23 |
tm_min | 分 | 00-59 |
tm_sec | 秒 | 00-59 |
tm_wday | 周几[0(周一)-6(周六)] | 0-6 |
tm_yday | 年里的第几天 | 001-366 |
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())
res = time.localtime()
print(res)
print(time.strftime('%Y-%m-%d %H:%M:%S'))
# 时间戳 <--> 结构化时间
print(time.gmtime(1648568039.8701835)) # 将时间戳转为结构化时间
print(time.localtime(1648568039.8701835)) # 将时间戳转为结构化时间
res = time.localtime() # 用res接收结构化时间
print(time.mktime(res)) # 将结构化时间转换成时间戳
# 结构化时间 <--> 格式化时间
print(time.strftime('格式化时间的格式', '结构化时间')) # 将结构化时间转换为格式化时间
time.strptime('格式化时间', '格式化时间的格式') # 将格式化时间转换为结构化时间
print(time.strftime('%Y-%m-%d', res))
print(time.strptime('2022-03-30-00-04-55', '%Y-%m-%d-%H-%M-%S'))
# 前后必须一致
import datetime
print(datetime.date.today()) # 获得时间的年月日 2022-03-30
print(datetime.datetime.today()) # 获得时间的年月日,时分秒2022-03-30 01:48:49.011196
res = datetime.date.today()
print(res) # 2022-03-30
print(res.year) # 2022
print(res.month) # 3
print(res.day) # 30
print(res.weekday()) # 0-6的周几数 2
print(res.isoweekday()) # 1—7的周几数 3
print(res.isocalendar()) # 获得(年份,第几周,周几) (2022, 13, 3)
import datetime
start_time = datetime.datetime.today()
del_time = datetime.timedelta(days=3, hours=3, minutes=13, seconds=44) # 时间间隔为3天3小时13分钟44秒
print(start_time)
print(del_time)
print(start_time - del_time) # 前推3天3小时13分钟44秒 2022-03-26 21:12:17.447559
print(start_time + del_time) # 后推3天3小时13分钟44秒 2022-04-02 03:39:45.447559
res = start_time + del_time
res1 = res - start_time
print(res1) # 3 days, 3:13:44 # 时间间隔为3天3小时13分钟44秒
import random
print(random.random()) # 随机产生0-1的小数
print(random.uniform(1, 9)) # 随机产生指定区域的小数
print(random.randint(1, 9)) # 随机产生指定区域的整数
print(random.randint(1, 6)) # 掷骰子
list_num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random.shuffle(list_num) # 是在列表内部直接打乱的,需要先打乱,才能输出
print(list_num)
print(random.sample(list_num, 3)) # 在指定的数据集里随机抽取指定个元素
random每次执行所得到的结果都是随机的
以上是脚本宝典为你收集整理的常用内置模块全部内容,希望文章能够帮你解决常用内置模块所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。