Python各种模块

2022/3/30 1:26:26

本文主要是介绍Python各种模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

re模块的说明

  import re
  res = re.findall('a(b)c', 'abcabcabcabc')
  print(res)
  res = re.findall('a(?:b)c', 'abcabcabcabc')
  print(res)
  res = re.findall('(a)(b)(c)', 'abcabcabcabc')
  print(res)
  res = re.findall('(?P<aaa>a)(b)(c)', 'abcabcabcabc')
  print(res)
  print(res.group('aaa'))
  """
  findall默认是分组优先展示
  	正则表达式中如果有括号分组 那么在展示匹配结果的时候默认
  	只演示括号内正则表达式匹配到的内容!!!
  	也可以取消分组有限展示的机制
  	(?:) 括号前面加问号冒号
  """

   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

collections模块

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

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

  card = namedtuple('扑克牌', ['花色', '点数'])
  c1 = card('黑桃♠', 'A')
  c2 = card('黑梅♣', 'K')
  c3 = card('红心❤', 'A')
  print(c1, c2, c3)
  print(c1.点数)

双端队列

  队列:先进先出   默认是只有一端只能进另外一端只能出
  双端队列:两端都可以进出
  import queue
   q = queue.Queue(3)  # 最大只能放三个元素

  # 存放元素
   q.put(123)
   q.put(321)
   q.put(222)
   q.put(444)  # 如果队列满了 继续添加则原地等待

  # 获取元素
   print(q.get())  # 123
   print(q.get())  # 321
   print(q.get())  # 222
   print(q.get())  # 如果队列空了 继续获取则原地等待

  from collections import deque
  q = deque([1,2,3])
  print(q)
  q.append(444)  # 右边添加元素
  print(q)
  q.appendleft(666)  # 左边添加元素
  print(q)
  q.pop()  # 右边弹出元素
  q.popleft()  # 左边弹出元素

字典相关

  # 正常的字典内部是无序的
   d1 = dict([('name','jason'),('pwd',123),('hobby','study')])
   print(d1)  # {'pwd': 123, 'name': 'jason', 'hobby': 'study'}
   print(d1.keys())

  # 有序字典
   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)
   print(d2.keys())

  """
  有如下值集合 [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)

  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)

计算机

  res = 'abcdeabcdabcaba'
  '''
  统计字符串中所有字符出现的次数
      {'a':3,'b':5...}
  '''
   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}
  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(secs)
      推迟指定的时间运行,单位为秒
      ps:该方法贯穿前后(基础,后期)
  2.time.time()
      获取当前时间戳

  # 三种用于表示时间的格式(彼此之间可以转换)
    1.时间戳
      距离1970年1月1日0时0分0秒至此相差的秒速
          time.time()
    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

格式化时间

  人最容易接收的一种时间格式  2000/1/21  11:11:11
    time.strftime()
    '%Y-%m-%d %H:%M:%S' # 2022-03-29 16:48:30
    '%Y-%m-%d %X'       # 2022-03-29 16:48:30

          %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")  前后必须一致
  ps:UTC时间比我所在的区域时间早八个小时(时区划分)

datetime模块

  # 基本操作
  import datetime
   print(datetime.date.today())  # 2022-03-29
   print(datetime.datetime.today())  # 2022-03-29 11:55:50.883392

  """
  date                意思就是年月日
  datetime            意思就是年月日 时分秒
  ps:后期很多时间相关的操作都是跟date和time有关系
  """
   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

  """时间差"""
  ctime = datetime.datetime.today()
  time_tel = datetime.timedelta(days=4)   # 有很多时间选项
   print(ctime)  # 2022-03-29 12:01:52.279025
   print(ctime + time_tel)  # 2022-04-02 12:01:52.279025
   print(ctime - time_tel)  # 2022-03-25 12:03:34.495813
  """
  针对时间计算的公式
      日期对象 = 日期对象 +/- timedelta对象
      timedelta对象 = 日期对象 +/- 日期对象
  """
  res = ctime + time_tel
  print(res - ctime)  # 4 days, 0:00:00

random模块

  '''别名>>>:随机数模块'''
  import random

   print(random.random())  #  随机产生一个0到1之间的小数
   print(random.uniform(2,4))  # 随机产生一个2到4之间的小数
   print(random.randint(0,9))  # 随机产生一个0到9之间的整数(包含0和9)
   print(random.randint(1,6))  #                              掷骰子
   l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
   random.shuffle(l)  # 随机打乱一个数据集合                       洗牌
   print(l)
   ll1 = ['特等奖','张飞抱回家','如花','百万现金大奖','群内配对']
   print(random.choice(ll1))  # 随机抽取一个                     抽奖
  ll = ['如花','熊大','熊二','光头强','妲己','张飞','关羽']
  print(random.sample(ll, 2))  # 随机指定个数抽样                 抽样


这篇关于Python各种模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程