各种模块的应用
2022/3/29 23:31:01
本文主要是介绍各种模块的应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- re模块的其它知识
- 正则表达式起别名及分组机制
- collections模块
- time与datetime模块
- random模块
re模块的其它知识
impore re ret = re.findall('a(b)c','abcabcabcabc') print(ret) 得到的结果是['b','b','b','b'] # 结论就是:如果在正则表达式中有括号分组的,那么在展示匹配结果的时候,默认只显示括号内正则表达式1匹配到的内容 ret = re.findall('a(?:b)c','abcabcabcabc') print(ret) 得到的结果是['abc','abc','abc','abc'] # 我们如果想取消正则表达式的分组有限展示的话,就可以在括号前面加问号跟冒号————(?:) ret = re.findall('(a)(b)(c)','abcabcabcabc') 得到的结果是[('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c')] # 结果它会将分组里的字符都以元祖的形式展现出来 ret = re.findall('(?P<name>a)(b)(c)', 'abcabcabcabc') print(ret) 得到的结果是[('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c'), ('a', 'b', 'c')] print(ret.group('name')) # ?P是给组取别名,下次想用的时候就可以通过这个名字来使用 ret = re.search('a(b)c', 'abcabcabcabc') print(ret.group()) 结果是abc # 因为search找到一个就结束 print(ret.group(0)) 结果是abc print(ret.group(1)) 结果是b # 分组优先展示的就只有findall方法,search跟match方法里面不会有分组优先展示 # 可以通过索引的方式单独获取分组内匹配到的数据,针对search和match有几个分组 group方法括号内最大就可以写几,超出了的话就会报错
collections模块
# 1.具名元祖 from collections import namedtuple 1.1.先产生一个元祖对象模板 point = namedtuple('坐标',['x','y']) 1.2.创建诸多元祖数据 p1 = point(1,2) p2 = point(3,4) 1.3.将元祖数据带入到对象模板中 print(p1) # 坐标(x=1, y=2) 1.4.也可以单独取元祖数据中的'x'或者'y' print(p1.x) # 1 # 1.5.元祖使用场景非常的广泛,可以是任意元祖数据 # 2.双端队列 队列:先进先出,默认是只有一端只能进另外一端只能出 双端队列:两端都能进出 import queue q = queue.Queue(2) # 2表示的是元素最大放置量是2个 存放元素 q.put(123) q.put(321) # 如果队列满了,继续添加则原地等待 获取元素 print(q.get()) # 123 print(q.get()) # 321 # 如果队列空了的话,继续获取则原地等待 from collections import deque q = deque([1,2]) print(q) 右边添加元素 q.append(3) 左边添加元素 q.appendleft(0) 右边弹出元素 q.pop() 左边弹出元素 q.popleft() # 3.字典相关 正常的字典内部是无序 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) # OrderedDict([('a', 1), ('b', 2), ('c', 3), ('x', 111), ('y', 222), ('z', 333)]) print(d2.keys()) # odict_keys(['a', 'b', 'c', 'x', 'y', 'z']) 有如下值集合 [11,22,33,44,55,67,77,88,99,999], 将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中 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) # 只能打印出K值 from collections import 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.计数器 res = 'abcdeabcdabcaba' 统计字符串中所有字符出现的次数 4.1.先创建一个字典 new_dict = {} 4.2.for循环 for i in res: 4.3.判断字符是否在字符串中 if i in not in new_dict: 4.4.字符第一次出现,应创建一个新的键值对 new_dict[i] = 1 else: new_dict[i] += 1 print(new_dict) # {'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1} from collections import Counter r = Counter(res) print(r) # Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}) print(r.get('a')) # 可以当成字典使用
time模块
# 常用方法 1.time.sleep(s):推迟指定的时间运行,括号里是时间 2.time.time():获取当前时间戳,时间戳就是1970年1月1日0时0分0秒起到现在的秒数 # 三种表示时间的格式 1.时间戳(time.time()) 2.结构化时间(主要是给计算机看的) time.localtime() 0 tm_year(年) 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' %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")
datetime模块
1.基本操作 import datetime print(datetime.date.today()) # date(年月日) print(datetime.datetime.today()) # 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 星期1-7 2.时间差 ctime = datetime.datetime.today() time_tel = datetime.timedelta(day=%s) print(ctime) print(ctime + time_tel) print(ctime - time_tel) 针对时间计算的公式 日期对象 = 日期对象 +/- timedelta对象 timedelta对象 = 日期对象 +/- 日期对象 eg: res = (ctime + time_tel) print(res - ctime)
random模块(随机数模块)
import random print(random.random()) #随机生成一个0与1之间的小数 print(random.uniform(1,2)) # 随机生成一个1与2之间的小数 print(random.randint(1,6)) # 随机生成一个1与6之间的整数,包含1和6 random.shuffle() # 随机打乱一个数据集合 random.choice() # 括号里没有参数的话,默认是列表中随机抽取一个 random.sample(%d) # %d代表随机抽取的个数
这篇关于各种模块的应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南