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编程从入门到实践#