Welcome!!!

F

伞兵一号,申请出战

常用内置模块

常用内置模块

re模块补充

"""
findall默认是分组优先展示
    正则表达式中如果有括号分组 那么在展示匹配结果的时候
    默认只显示括号内正则表达式匹配到的内容!!!
也可以取消分组优先展示的机制
    (?:)  括号前面加问号冒号
"""
# import re
# res = 'abcabcabcabcabcabcabc'
# ret = re.findall('(a)(b)c',res)  # 使用括号可以将括号的内容分组进行展示
# print(ret)
# >>>[('a', 'b'), ('a', 'b'), ('a', 'b'), ('a', 'b'), ('a', 'b'), ('a', 'b'), ('a', 'b')]
# ret1 = re.findall('(?:a)(?:b)(c)',res)  # 加了?:就不会优先展示了
# print(ret1)
# >>>['c', 'c', 'c', 'c', 'c', 'c', 'c']

# ret = re.search('a(b)c', 'abcabcabcabc')
# print(ret.group())  # abc
# print(ret.group(0))  # abc
# print(ret.group(1))  # b        可以通过索引的方式单独获取分组内匹配到的数据
# ret = re.search('a(b)(c)', 'abcabcabcabc')
# print(ret.group())  # abc
# print(ret.group(0))  # abc
# print(ret.group(1))  # b        可以通过索引的方式单独获取分组内匹配到的数据
# print(ret.group(2))  # c        可以通过索引的方式单独获取分组内匹配到的数据
'''针对search和match有几个分组 group方法括号内最大就可以写几'''

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

collocations模块

'''提供了更多数据类型'''
# 1. 具名元组
# form collocations import namedtuple
# piont = namedtuple('学生','name age gender height weight')
# p1 = piont('petter', 18, 'male', 185, 70)
# p2 = piont('oscar', 18, 'male', 155, 70)
# print(p1.name)  # 类似于封装数据
# print(p2.gender)
# >>>petter
# >>>male

# 2. 双端队列
'''
	队列:先进先出
	双端队列:两端都可以进出
'''
# from collections import deque
# p = deque([1,2,3])
# print(p)
# p.append('append')  # 末尾追加数据
# print(p)
# p.appendleft('appendleft')  # 左侧追加数据
# print(p)
# p.pop()  # 弹出末尾数据
# print(p)
# p.popleft()  # 左侧弹出数据
# print(p)
# >>>deque([1, 2, 3])
# >>>deque([1, 2, 3, 'append'])
# >>>deque(['appendleft', 1, 2, 3, 'append'])
# >>>deque([1, 2, 3, 'append'])
# >>>deque([1, 2, 3])

# 3. 字典相关
# 正常的字典内部是无序的,我们所看到的有序是pycharm优化的结果 
# 不正常的字典(有序字典)
# from collections import OrderedDict
# dict1 = OrderedDict([('name','petter'),('age',18),('gender','male')])
# print(dict1)  
# dict1['height'] = 185  # 添加数据
# print(dict1)
# print(dict1.keys())  # 查看所有key
# >>>OrderedDict([('name', 'petter'), ('age', 18), ('gender', 'male')])
# >>>OrderedDict([('name', 'petter'), ('age', 18), ('gender', 'male'), ('height', 185)])
# >>>odict_keys(['name', 'age', 'gender', 'height'])
# 数据筛选分类
# from collections import defaultdict
# list1 = [1, 5, 8, 9, 3, 4, 2, 6, 7]
# dict1 = defaultdict(list)  # 新建空字典,每个value都是空列表[]
# for i in list1:
#     if i % 2 == 0:
#         dict1['单数'].append(i)
#     else:
#         dict1['双数'].append(i)
# print(dict1)
# >>>defaultdict(<class 'list'>, {'双数': [1, 5, 9, 3, 7], '单数': [8, 4, 2, 6]})

# 4.计数器
# 统计字符串中每个字符出现的次数
# res = 'dahfkjasdfhsaklhfjksdahfkhasdhfkjlah'
# from collections import Counter
# r = Counter(res)  # 统计字符出现次数,组织成字典返回
# print(r)
# >>>Counter({'h': 7, 'a': 6, 'f': 5, 'k': 5, 'd': 4, 's': 4, 'j': 3, 'l': 2})

time模块

# 1. 常用方法
1. time.sleep()
	程序休眠,括号内写休眠时长,单位为秒
2. time.time()
	获取当前时间戳
  
# 2. 三种用于表示时间的格式(彼此间可以转换)
	1. 时间戳time.time()
    	距离1970年1月1日0时0分0秒之间的秒数差
    2. 结构化时间time.localtime()
    	该时间主要是给计算机看的,人看起来不方便
        该方法可以跟一些后缀方法,可以获取想要的时间,方法见附表
    3. 格式化时间time.strftime()
    	显示当前时间
       	该方法可以根据不同参数显示不同格式时间,参数可以连用,参数见附表
        eg:
            print(time.strftime('%Y-%m-%d %H:%M:%S'))
        运行结果:
            2022-03-29 17:12:38

后缀名 作用
tm_year
tm_mon
tm_mday
tm_hour
tm_min
tm_sec
tm_wday 一周的第几天(0-6,0表示周一)
tm_yday 一年的第几天
tm_isdst 是否是夏令时(默认为0)

结构化时间后缀

参数 作用
%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()时间戳>结构化时间
     mktime()结构化时间>时间戳
# 结构化时间<--->格式化时间
	strftime() 结构化时间>格式化时间
    strptime() 格式化时间>结构化时间
    
'''ps:UTC时间比我所在的区域时间早八个小时(时区划分)'''

datetime模块

# 基本操作(取时间)
import datetime
# print(datetime.date.today())  # 2022-03-29
# print(datetime.datetime.today())  # 2022-03-29 17:31:15.470249
"""
date                意思就是年月日
datetime            意思就是年月日 时分秒
ps:后期很多时间相关的操作都是跟date和time有关系
"""
# 时间差
ctime = datetime.datetime.today()
time_tel = datetime.timedelta(days=3)  # 设置差值
print(ctime)  
print(ctime + time_tel)
运行结果:
    2022-03-29 17:55:41.965276
	2022-04-01 18:55:41.965276
"""
针对时间计算的公式
    日期对象 = 日期对象 +/- timedelta对象
    timedelta对象 = 日期对象 +/- 日期对象
"""

random模块

随机数模块
# 常用方法
# import random
# l1 = [1,2,3,4,5,6,7,8,9]
# print(random.random())  # 产生0-1之间的小数
# print(random.uniform(0,9))  # 产生0-9之间的小数
# print(random.randint(0,9))  # 产生0-9之间的整数
# random.shuffle(l1)  # 打乱数据集顺序
# print(l1)
# print(random.choice(l1))  # 随机抽样
# print(random.sample(l1,3))  # 指定抽样个数
# >>>0.7754908818200633
# >>>7.940111856951369
# >>>5
# >>>[5, 4, 6, 3, 8, 1, 7, 9, 2]
# >>>4
# >>>[6, 9, 7]

posted @ 2022-03-29 18:08  程序猿伞兵一号  阅读(36)  评论(0)    收藏  举报