Python中re、shutil、argparse库
一、re库
是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
- 创建一个匹配的正则表达式:pattern
- 用该正则表达式去匹配用户的输入来判断是否合法
正则表达式的一般描述方式:
- \d:可匹配一个数字
- \w:可匹配一个字母或数字
- \s:匹配一个空格(包括Tab等空白符)
- \d{3},\d{3,8}:匹配3个数字,匹配3-8个数字
- {n}表示n个字符,{n,m}表示n-m个字符
- *表示任意个字符,包括0个
- +表示至少一个字符
- ?表示0个或1个字符
- 转义字符\的使用
正则表达式的强化描述方式:
- [0-9a-zA-Z\_]:可以匹配一个数字、字母或者下划线
- [0-9a-zA-Z\_]+:可以匹配至少由一个数字、字母或者下划线组成的字符串,比如 'a100' , '0_Z' , 'Py3000' 等等
- [a-zA-Z\_][0-9a-zA-Z\_]*:可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量
- [a-zA-Z\_][0-9a-zA-Z\_]{0,19}:更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)
- A|B:可以匹配A或B
- ^表示行的开头
- ^\d表示必须以数字开头
- $表示行的结束
- \d$表示必须以数字结束
- 正则表达式建议使用‘r’前缀,就不用考虑转义的问题
1 import re 2 ma = re.match('^\d{3}\-\d{3,8}$','010-1234567') 3 print(ma) 4 5 #结果 6 <re.Match object; span=(0, 11), match='010-1234567'> 7 span表示的是匹配的数量 8 match表示的是匹配的内容
如果不匹配,返回值就是None
分组:除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用 () 表示的就是要提取的分组(Group)
- ^(\d{3})-(\d{3,8})$:分别定义了两个组,再加上默认的分组,分别为ma.group()是010-1234567、ma.group(1)是010、ma.group(2)是1234567
1 t = '19:05:30' 2 m = re.match(r'^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t) 3 4 m.groups()
re.search()函数、re.match()函数、re.findall()函数:
- re.search()函数:匹配不限位置,只要有匹配就行
- re.match()函数:只会匹配目标字符串开头是否满足正则表达式,若开头不满足则匹配失败,函数返回None
- re.findall()函数:匹配目标字符串中所有满足条件的正则表达式
1 import re 2 text = "生于杭州市余杭区,成长经历地杭州市余杭区,居住较长的地区杭州市余杭区69年,无疫区居住史,无冶游史,有饮酒习惯,酒类:白酒,每天500-600ml,已饮30年,未戒。,有吸烟习惯,种类:纸烟,每天20-30支,已吸30年,已戒6年。,否认毒物及放射性物质接触史。既往在矿场工作。" 3 pattern = r'(有吸烟习惯)[,,]种类[::]纸烟[,,](每[天日周月]\d{1,2}-\d{1,2}[支根])[,,]已吸(\d{1,2}年)[,,](已戒)(\d{1,2}年)。' 4 result = re.search(pattern, text) 5 result1 = re.match(pattern, text) 6 result2 = re.findall(pattern, text) 7 8 print(result) 9 print(result1) 10 print(result2) 11 print(type(result2)) 12 13 #结果 14 <re.Match object; span=(84, 116), match='有吸烟习惯,种类:纸烟,每天20-30支,已吸30年,已戒6年。'> 15 None 16 [('有吸烟习惯', '每天20-30支', '30年', '已戒', '6年')] 17 <class 'list'>
二、shutil库
作为os模块的补充,提供复制、移动、删除、解压等操作
- 复制文件shutil.copy(src,dst)
- 复制文件夹shutil.copytree(src,dst)
- 移动文件或文件夹shutil.move(src,dst)
- 删除文件夹(不可删除文件)shutil.rmtree(src)
- 创建和解压压缩包zipobj.write()创建一个压缩包、zipobj.namelist()读取压缩包中的文件信息、zipobj.extract()将压缩包的单个文件解压出来
三、argparse库
是python用于解析命令行参数和选项的标准模块
#后续用到时再补充

浙公网安备 33010602011771号