IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python内置模块 -> 正文阅读

[Python知识库]python内置模块

re模块

在python要想使用正则必须借助于模块,re就是其中之一

''' 基本操作方法 '''
import re
re.findall('正则表达式', '带匹配的文本')   # 根据正则匹配除所有符合条件的数据
res = re.findall('a', 'eva chick jason')
print(res)		# ['a', 'a']    结果是一个列表(要么有元素,要么空列表)

在这里插入图片描述

res = re.search('正则表达式', '带匹配的文本')     # 根据正则匹配到一个符合条件的就结束
res = re.search('a', 'eva chick jason')
print(res)      # 结果对象  <_sre.SRE_Match object; span=(2, 3), match='a'>
print(res.group())  # 正在的结果 a

""" 如果没有符合条件的数据 那么search返回None 并且使用group会直接报错"""

使用group不报错解决方案:
    if res:
        print(res.group())
    else:
        print('不好意思,没有找到')

在这里插入图片描述

res = re.match('a', 'abcda')    # 根据正则从头开始匹配(文本内容必须子啊开头匹配上)
print(res)      # <_sre.SRE_Match object; span=(0, 1), match='a'>
print(res.group())  # a
""" 如果没有符合条件的数据,那么match返回None,而且使用group会直接报错"""

使用group不报错解决方案:
if res:
    print(res.group())
else:
    print('不好意思,没有找到')

在这里插入图片描述

re模块其他方法

import re
# 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
res = re.split('[ab]', 'abcd')
print(res)

在这里插入图片描述

# 类似于字符串类型的replace方法
res = re.sub('\d', 'H', 'eva3chick4yuan4', 1)   # 替换正则匹配到的内容
print(res)  # evaHchick4yuan4
res1 = re.sub('\d', 'H', 'eva3chick4yuan4')  # 不写默认替换所有
print(res1) # evaHchickHyuanH

在这里插入图片描述

# 返回元组,并提示替换了几处
res = re.subn('\d', 'H', 'eva3chick4yuan4', 1)
print(res)  # ('evaHchick4yuan4', 1)
res = re.subn('\d', 'H', 'eva3chick4yuan4')
print(res)  # ('evaHchickHyuanH', 3)

在这里插入图片描述

# 常用
regexp_obj = re.compile('\d+')
res = regexp_obj.search('absd213j1hjj213jk')
res1 = regexp_obj.match('absd213j1hjj213')
res2 = regexp_obj.findall('1213k1j2jhj21j3123hh')
print(res, res1, res2)

在这里插入图片描述

# 常用
res = re.finditer('\d+', 'ashdklah21h23kj12jk3klj112312121kl131')
print([i.group() for i in res])

在这里插入图片描述

res = re.search("1(\d{14})(\d{2}[0-9x])?$", ‘110105199812067023’)
print(res) # <_sre.SRE_Match object; span=(0, 18), match=‘110105199812067023’>
print(res.group()) # 110105199812067023
print(res.group(1)) # 10105199812067
print(res.group(2)) # 023
在这里插入图片描述

# findall针对分组优先展示   无名分组
res = re.findall("^[1-9]\d{14}(\d{2}[0-9x])?$", '110105199812067023')
print(res)      # ['023']
# 取消分组优先展示      无名分组
res1 = re.findall("^[1-9](?:\d{14})(?:\d{2}[0-9x])?$", '110105199812067023')
print(res1)     # ['110105199812067023']

在这里插入图片描述

# 有名分组
res = re.search('^[1-9](?P<xx>\d{14})(?P<zz>\d{2}[0-9x])?$','110105199812067023')
print(res)
print(res.group())
print(res.group(1))
print(res.group('xx'))
print(res.group('zz'))

在这里插入图片描述

正则实战案例

import re

# 读取带匹配的数据
with open(r'a.txt', 'r', encoding='utf8') as f:
    data = f.read()
# 利用正则匹配数据
# 分公司名称
title_list = re.findall('<h2>(.*?)</h2>', data)
# print(title_list)
# 分公司地址
address_list = re.findall("<p class='mapIco'>(.*?)</p>", data)
# print(address_list)
# 分公司邮箱
email_list = re.findall("<p class='mailIco'>(.*?)</p>", data)
# print(email_list)
# 分公司电话
phone_list = re.findall("<p class='telIco'>(.*?)</p>", data)

res = zip(title_list, address_list, email_list, phone_list)
for data_tuple in res:
    print("""
    公司名称:%s
    公司地址:%s
    公司邮箱:%s
    公司电话:%s
    """ % (data_tuple[0], data_tuple[1], data_tuple[2], data_tuple[3]))

collections模块

1.namedtuple(具名元组)
    from collections import namedtuple

    """
    namedtuple('名称',[名字1,名字2,...])
    namedtuple('名称','名字1 名字2 ...')
    """
    # point = namedtuple('坐标', ['x', 'y'])
    # res = point(11, 22)
    # print(res)  # 坐标(x=11, y=22)
    # print(res.x)  # 11
    # print(res.y)  # 22
    # point = namedtuple('坐标', 'x y z')
    # res = point(11, 22, 33)
    # print(res)  # 坐标(x=11, y=22, z=33)
    # print(res.x)  # 11
    # print(res.y)  # 22
    # print(res.z)  # 33
    # card = namedtuple('扑克', '花色 点数')
    # card1 = card('?', 'A')
    # card2 = card('?', 'K')
    # print(card1)
    # print(card1.花色)
    # print(card1.点数)

2.队列
    # 队列模块
    import queue  # 内置队列模块:FIFO
    # 初始化队列
    # q = queue.Queue()
    # 往队列中添加元素
    # q.put('first')
    # q.put('second')
    # q.put('third')
    # 从队列中获取元素
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # print(q.get())  # 值去没了就会原地等待

3.双端队列
    from collections import deque
    q = deque([11,22,33])
    q.append(44)  # 从右边添加
    q.appendleft(55)  # 从左边添加
    print(q.pop())  # 从右边取值
    print(q.popleft())  # 从做边取值

4.有序字典
    normal_dict = dict([('name', 'jason'), ('pwd', 123), ('hobby', 'study')])
    print(normal_dict)
    {'hobby': 'study', 'pwd': 123, 'name': 'jason'}
    from collections import OrderedDict
    order_dict = OrderedDict([('name', 'jason'), ('pwd', 123), ('hobby', 'study')])
    print(order_dict)
    OrderedDict([('name', 'jason'), ('pwd', 123), ('hobby', 'study')])
    order_dict['xxx'] = 111
    order_dict
    OrderedDict([('name', 'jason'), ('pwd', 123), ('hobby', 'study'), ('xxx', 111)])
    normal_dict['yyy'] = 222
    normal_dict
    {'hobby': 'study', 'pwd': 123, 'yyy': 222, 'name': 'jason'}
    
5.默认值字典
	from collections import defaultdict
    values = [11, 22, 33,44,55,66,77,88,99,90]
    my_dict = defaultdict(list)
    for value in  values:
        if value>60:
            my_dict['k1'].append(value)
        else:
            my_dict['k2'].append(value)
    print(my_dict)

6.计数器
	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)
    from collections import Counter  # 计数器
    ret = Counter(res)
    print(ret)

time模块

"""
时间三种表现形式
	1.时间戳(秒数)
	2.结构化时间(一般是给机器看的)
	3.格式化时间(一般是给人看的)
	三种时间是可以相互转换的!!!
"""
1.time.sleep()  # 原地阻塞指定的秒数
2.time.time()  # 获取时间戳时间(自1970-1-1 00:00)

import time


# 获取当前格式化的时间字符串
 print(time.strftime('%Y-%m-%d'))  # 2021-11-25
 print(time.strftime('%Y-%m-%d %H:%M:%S'))  # 2021-11-25 11:48:34
 print(time.strftime('%Y-%m-%d %X'))  # 2021-11-25 11:48:34
 
"""
更多时间相关符号 保存到容易查找的位置即可
"""
本地时区的struct_time(结构化的时间)
# print(time.localtime())
UTC时区的struct_time(结构化时间)
# time.struct_time(
# tm_year=2021,
# tm_mon=11,
# tm_mday=25,
# tm_hour=11,
# tm_min=51,
# tm_sec=25,
# tm_wday=3,
# tm_yday=329,
# tm_isdst=0)


# print(time.time())
print(time.gmtime(11111111111))
# print(time.localtime())

在这里插入图片描述

datetime模块

import datetime
# print(datetime.date.today())  # 2021-11-25
# print(datetime.datetime.today())  # 2021-11-25 12:15:11.969769
"""date年月日  datetime年月日时分秒  time时分秒(MySQL django后期可以)"""
# res = datetime.datetime.today()
# print(res.year)  # 2021
# print(res.month)  # 11
# print(res.day)  # 25
# print(res.weekday())  # 获取星期(weekday星期是0-6) 0表示周一
# print(res.isoweekday())  # 获取星期(weekday星期是1-7) 1表示周一

"""时间差(timedelta)"""
# ctime = datetime.datetime.today()
# time_tel = datetime.timedelta(days=3)
# print(ctime)  # 2021-11-25 12:20:48.570489
# print(ctime - time_tel)  # 2021-11-22 12:21:06.712396
# print(ctime + time_tel)  # 2021-11-28 12:21:06.712396
"""
日期对象 = 日期对象 +/- timedelta对象
timedelta对象 = 日期对象 +/- 日期对象
"""
# ret = ctime + time_tel
# print(ret - ctime)  # 3 days, 0:00:00
# print(ctime - ret)  # -3 days, 0:00:00


# 小练习 计算举例今年过生日还有多少天
# birthday = datetime.date(2000, 11, 11)
# now_date = datetime.date.today()
# days = birthday - now_date
# print('距离生日还有{}天'.format(days))

# UTC时间与我们的东八区时间差 八个小时
# print(datetime.datetime.now())  # 2021-11-25 12:25:33.579310
# print(datetime.datetime.utcnow())  # 2021-11-25 04:25:33.579310

  1. 1-9 ??

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 08:49:10  更:2021-11-26 08:51:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:51:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码