Python标准库的定义
Python的库特别的丰富,安装后自带的库,这些库称为标准库,标准库有哪些?从哪里去找呢?
官方网站查看文档
https://www.python.org/
这里面就是Python标准库的内容了
这些库的基本满足正常开发使用
常用模块:
文本处理的re
日期类型的time、datetime
数字和数学类型的math、random
文件和目录访问的pathlib、os.path
数据压缩和归档的tarfile
常用操作系统的os、logging、argparse
多线程的threading、queue
Internet数据处理的base64、json和urllib
结构化标记处理工具的html、xml
开发工具的unitest
调式工具的timeit
软件包发布的venv
运行服务的__main__
正则表达式re
第一个要掌握的库--正则表达式库
re 是进行文本的查找和文本匹配的
#匹配单个字符功能import rep=re.compile('a')print(p.match('a'))
#匹配功能import rep=re.compile('a')print(p.match('b'))
小结
很多的编程都是从0下标开始的,字符串也是如此,匹配了一个字符,匹配的对象是a
匹配一串字符import rep=re.compile('Man')print(p.match('Man'))
出现更多的a时import rep=re.compile('Man')print(p.match('Maaaan'))
如何处理以上问题
匹配一串字符,并且字符串有一定的规律
特殊的字符称为元字符
正则表达式的元字符
正则表达式的神奇之处在于用很多特殊的符号来去匹配指定的字符
常用特殊符号
.匹配任意的单个字符
import rep=re.compile('.')print(p.match('M'))
.可以匹配多个,匹配多个就输入多个·
^表示以什么样的字符做开头,再搜索和替换的时候这个符号就非常重要
表示从开头进行搜索
$表示以什么样的字符做结尾,从后面向前面匹配
*匹配前面的字符从0次到多次的
import rep=re.compile('Ma*n')print(p.match('Mn'))
import rep=re.compile('Ma*n')print(p.match('Maaaan'))
+表示前面字符出现1次到多次
?表示字符出现0次或1次
{m}表示大括号里面要填写一些内容,大括号表示前面的字符出现的指定次数(如果出现次数不匹配就为失败)
import rep=re.compile('Ma{2}n')print(p.match('Maan'))
{m,n}表示出现m~n次
[]任意的字符匹配成功,都匹配成功
|表示选择字符左边或者右边,通常会和括号用在一起
\d表示匹配的内容是转译数字,也可用单个匹配,匹配起来就非常麻烦,相当于[0-9]+
\D表示匹配不包含数字的,123-456-789把非数字提取出来,只保留数字,就是用\D
\s表示匹配的字符串,表示只包括a-z这样的字符串
()表示进行分组
^$表示一行是空行
.*?表示不使用贪婪模式
匹配三个任意的字符
import rep=re.compile('...')print(p.match('Man'))
可以和其他符号组合
import rep=re.compile('.{3}')print(p.match('Man'))
匹配年月日,把年月日都取出来
import rep=re.compile('.{4}-.{2}-.{2}')print(p.match('2020-07-29'))
用户输入的日期和我们预想的不符
import rep=re.compile(r'(\d+)-(\d+)-(\d+)')#告诉程序原样输出,()小括号进行分组,+表示多次的print(p.match('2020-7-29'))
为了不转译加r
演示如下
print('\nx\n')#\n表示换行符
print(r'\nx\n')
所以在以上我们发现用到了r
取出年月日的某一部分
import rep=re.compile(r'(\d+)-(\d+)-(\d+)')print(p.match('2020-7-29').group(1))#group()里面的1表示第一组print(p.match('2020-7-29').groups())#取出所有
赋值给变量import rep=re.compile(r'(\d+)-(\d+)-(\d+)')yaer,month,day=p.match('2020-07-29').groups()print(yaer)print(month)print(day)
正则表达式库函数match与search的区别
Match与正则表达式要一一对应
在匹配之前要清楚的知道字符串是什么形式的出现的
如果用户输入不准确的日期,那么是会报错的,这样我们就引入search
不完全匹配
import rep=re.compile(r'(\d+)-(\d+)-(\d+)')print(p.search('aa2020-7-29'))
search用于函数中搜索指定的字符串
match用于完全匹配进行分组
Python标准库-正则表达式库替换函数sub()的实例
sub()在re中字符串的替换
Sub()一般有三个参数:
第一个参数为匹配规则
第二个参数为将字符串替换的
第三个是将要替换的字符串
将abcd中的c替换成*
import rea= re.sub('c', '*', 'abcd')print(a)
import rephone='123-4567-8900'#这是电话号码a=re.sub(r'#.*$','',phone)#将#号后的内容替换为空print(a)
横线替换掉,只保留数字(用\D表示非数字字符替换为空)
import rephone='123-4567-8900'#这是电话号码a=re.sub(r'#.*$','',phone)print(a)a1=re.sub(r'\D','',phone)print(a1)