Python 标准库模块 - re

Python016

Python 标准库模块 - re,第1张

re模块被称为正则表达式,其作用为,创建一个“规则表达式”,用于验证和查找符合规则的文本,广泛用于各种搜索引擎、账户密码的验证等。

预定义字符:

\d:匹配所有的十进制数字0-9

\D:匹配所有的非数字,包含下划线

\s:匹配所有空白字符(空格、TAB等)

\S:匹配所有非空白字符,包含下划线

\w:匹配所有字母、汉字、数字a-z A-Z 0-9

\W:匹配所有非字母、汉字、数字,包含下划线

特殊字符:

$:匹配一行的结尾(必须放在正则表达式最后面)

^:匹配一行的开头(必须放在正则表达式最前面)

*:前面的字符可以出现0次或多次(0~无限)

+:前面的字符可以出现1次或多次(1~无限)

?:变"贪婪模式"为"勉强模式",前面的字符可以出现0次或1次

.:匹配除了换行符"\n"之外的任意单个字符

|:两项都进行匹配

[ ]:代表一个集合,有如下三种情况

[abc]:能匹配其中的单个字符

[a-z0-9]:能匹配指定范围的字符,可取反(在最前面加入^)

[2-9] [1-3]:能够做组合匹配

{ }:用于标记前面的字符出现的频率,有如下情况:

{n,m}:代表前面字符最少出现n次,最多出现m次

{n,}:代表前面字符最少出现n次,最多不受限制

{,m}:代表前面字符最多出现n次,最少不受

{n}:前面的字符必须出现n次

该模块提供了堆排序算法的实现。堆是二叉树,最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。

heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用heap.heapify(list)转换列表成为堆结构

heapq 模块还有一个 heapq.merge(*iterables) 方法,用于合并多个排序后的序列成一个排序后的序列, 返回排序后的值的迭代器。

类似于 sorted(itertools.chain(*iterables)) ,但返回的是可迭代的。

堆创建好后,可以通过`heapq.heappop() 函数弹出堆中最小值。

如果需要删除堆中最小元素并加入一个元素,可以使用 heapq.heaprepalce() 函数

如果需要获取堆中最大或最小的范围值,则可以使用 heapq.nlargest() 或 heapq.nsmallest() 函数

这两个函数还接受一个key参数,用于dict或其他数据结构类型使用

实现heap堆排序算法

该算法和 sorted(iterable) 类似,但是它是不稳定的。

堆的值可以是元组类型,可以实现对带权值的元素进行排序。

Python3标准库文档

Python堆排序

在前一节我们介绍了标准库的sys模块和os模块,本节将介绍标准库的fileinput模块和time模块。

fileinput模块能够让我们轻松地迭代一系列文本文件中的行。

fileinput模块中一些重要的函数,也是我们在实际开发中需要经常用到的,具体如下表所示:

fileinput.input(): fileinput模块中最重要的函数,它返回一个可在for循环中进行迭代的对象。

fileinput. filename(): 返回当前文件(即正在处理的行所属的文件)的文件名。

fileinput. lineno(): 返回当前行的编号。

fileinput. filelineno(): 返回当前行在当前文件中的行号。

fileinput. isfirstline(): 在当前行为当前文件中的第一行时返回True,否则返回False。

fileinput. isstdin():在当前文件为sys.stdin时返回True,否则返回False。

fileinput. nextfile():关闭当前文件并跳到下一个文件,且计数时忽略跳过的行。

fileinput. close():关闭整个文件链并结束迭代。

上面关于介绍的fileinput模块中的函数的实例用法如下my_fileinput.py程序所示:

time模块包含用于获取当前时间、操作时间和日期、从字符串中读取日期、将日期格式化为字符串的函数。日期可表示为实数,也可表示为包含9个整数的元组。例如,元组(2021, 6, 8, 22, 13, 56, 1, 21, 0)表示2021年6月8日22时13分56秒。日期元组中各字段含义如下表所示:

秒的取值范围为0~61,这考虑到了闰一秒和闰两秒的情况。夏令时数字是一个布尔值(True或False),但如果你使用-1,那么mktime[将时间元组转换为时间戳(从新纪元开始后的秒数)的函数]可能得到正确的值。

模块time中有一些重要的函数,也是我们在实际开发中需要经常用到的,具体如下表所示:

time.asctime(): 将当前的时间转换成字符串形式,如果不想使用当前时间,也可以传递一个时间元组作为参数。如果要使用更复杂的时间格式化,可以使用strftime()函数。

time.localtime(): 将一个实数转换成时间元组(这里是本地时间),如果要转换成国际标准时间,应该使用time.gmtime()函数。需要注意这里的实数是一个从新纪元开始后的秒数,世界新纪元指的是 1970年1月1日0时0分0秒,如果是本地新纪元的话,需要加上本地的时区时间。

time.mktime(): 将时间元组转换成从新纪元开始后的描述,这与time.local()函数功能相反。

time.sleep(): 让解释器等待指定的秒数,即程序暂停指定的秒数。

time.strftime(): 将时间元组按照指定的格式转换成字符串格式。常用的格式符有:%Y表示年,%m表示月,%d表示日,%H表示时,%M表示分,%S表示秒。更多格式符可参考官方标准文档。

上面关于介绍的time模块中的函数的实例用法如下my_time.py程序所示:

注意:另外还有两个较新的关于时间的模块:datetime和timeit,大家可执行查阅相关文档。

本节主要介绍了以下内容:

如果有需要文中小程序的可以私信我哟!

欢迎大家转发、评论!

#Python# #python# #Python基础# #python打卡# #Python编程从入门到实践#