异常
什么是异常:程序运行的时候报错就是异常
异常捕获目的:当程序出现异常的时候,程序不崩溃还可以继续执行后面的代码
什么时候需要捕获异常:代码编译没有问题,可能由于用户的不当操作而产生的异常等情况
捕获所有异常:
try:
代码段1
except:
代码段2
finally:
代码段3
说明:try,except – 关键字;固定写法
代码段1 – 需要捕获异常的代码
代码段2 – 捕获到异常后会执行的代码
执行过程:先执行try后面的代码段1,如果没有异常,直接执行后面的代码(不会执行代码段2)
如果代码段1在执行的时候出现异常,程序不会崩溃,直接执行except后面的代码段2
关键字:finally的存在不影响原来异常捕获的执行,finally后面的代码不管try里面的代码发生了什么情况都会执行,就算代码段1出现异常没有被捕获,finally后面的代码也会被执行
捕获指定错误类型的异常:
try:
代码段1
except 异常类型:
代码段2
finally:
代码段3
说明同上;
同时捕获多种异常,针对不同异常进行相同
的处理:
try:
代码段1
except (异常类型1, 异常类型2,...):
代码段2
finally:
代码段3
说明:针对不同的异常,最后执行一样的处理
同事捕获多种异常,针对不同异常进行不同的处理:
try:
代码段1
except 异常类型1:
代码段2
finally 异常类型2:
代码段3
正则
什么是正则:正则表达式是让复杂的字符串处理变得更加简单的工具
正则语法:fullmatch(正则表达式, 字符串) – 判断指定的字符串是否满足正则表达式的规则,如果不满足返回None
匹配类字符
匹配类符号(一个符号必须匹配一个对应的字符):普通字符、.、\d、\s、\D、\S、[字符集]、[ ^字符集]
-
普通字符,普通字符指的是正则表达式中除了特殊符号以外的符号都是普通字符,普通字符在正则表达式中表示这个符号本身
-
‘.’ – 匹配一个任意字符
-
‘\d’ – 匹配一个任意的数字
-
‘\s’ – 匹配一个任意空白字符,空白字符:空格,\n,\t
-
\D – 匹配任意一个非数字字符(小写d取反)
-
\S – 匹配任意一个非空白字符
-
[字符集] – 匹配字符集中任意一个字符
[1-9] – 匹配1到9中任意一个字符
[a-zA-Z] – 匹配任意一个字母
[\u4e00-\u9fa5] – 匹配任意一个中文
字符集注意:
-
一个[]只能匹配一个字符
-
'-‘如果在两个字符之间表示范围,这个’-‘前面的字符编码值必须小于’-'后面字符的编码值
-
如果’-'不在两个字符之间,表示它自己本身
-
[^字符集] – 匹配不在字符集中的任意一个字符(取反)
检测类符号
检测类符号:检测符号所在的位置是否符号要求
注意:检测类符号不影响匹配
- \b – 检测是否是单词边界,单词边界是指所有可以划分出两个不同单词的符号,包括空白,标点符号,字符串开头或者结尾
- \B – 检测是否是非单词边界
- ^ – 检测是否是字符串开头
- $ – 检测是否是字符串结尾
匹配次数
-
‘*’ – 匹配0次或多次
-
‘+’ – 匹配 1次或多次
-
‘?’ – 匹配0次或1次
-
{}
{N} – 匹配N次
{M,N} – 匹配M到N次
{M,} – 匹配至少M次
{,N} – 匹配最多N次
贪婪匹配和非贪婪匹配
在匹配次数不确定的时候匹配模式分别贪婪和非贪婪
1)贪婪:在能匹配成功的前提下尽可能多的去匹配,例如匹配1次、3次和4次都能匹配成功,最后取4次。
默认情况下,所有的不确定次数匹配的时候都是贪婪的: 、+、?、{M,N}、{M,}、{,N}
2)非贪婪:在能匹配成功的前提下尽可能少的去匹配,例如匹配1次、3次和4次都能匹配成功,最后取1次。
在匹配次数不定的次数后加?,就变成非贪婪模式:?、+?、??、{M,N}?、{M,}?、{,N}?
分组和分支
分组:用()将正则的一部分括起来看成一个整体进行操作
用法一:看成一个整体进行操作
用法二:整体重复,在包含分组的正则中,可以通过\N来重复前面第N个分组匹配到的内容
用法三:捕获(只针对findall有效)
分支:’|’
r’正则表达式1|正则表达式2’ – 先用正则1进行匹配,如果失败再使用正则2进行匹配
转义字符
正则转义符号:在具有特殊功能或者特殊意义的符号前加\,让符号原来的功能和意义消失,表示符号本身
具有特殊意义和功能的独立的符号,放在[]里面,对应的功能会自动消失,例如:+、?、*、$、^(不放在最前面)、|等