5.15 struct模块
-
pack 能够把所有的数字都固定的转换成4字节
5.16 dis
-
dis.dis 查看计算机指令
5.16 正则表达式
-
基础
-
正则表达式概念: 是一种规则(元字符,量词)
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
-
re 模块和正则表达式的关系
re 模块本身只是用来操作正则表达式,和正则表达式一点关系都没有
-
应用;
匹配字符串
表单验证
爬虫
-
-
[ ] 字符组
-
本身是哪一个字符,就匹配字符串中哪一个字符
-
字符组[字符1字符2],一个字符组就代表匹配一个字符,只要这个字符出现在字符串中,那么久说明这个字符能匹配上
-
字符中还可以使用范围
-
所有的范围都必须遵循ascii码从小到大来指定
-
-
元字符
-
\ 转义符 可以转义所有
\ d (digit) 能匹配所有0-9之间的数字
\w (word) 能匹配大小写字母,数字,下划线
\s (space) 能匹配 空白 空格 换行符 制表符
\ t (table) 只能匹配制表符
\ n (next) 只能匹配换行符
-
\D 表示除 数字所有
\W 表示除 大小写字母,数字,下划线 的所有
\S 表示除 空白 空格 换行符 制表符 的所有
-
[\d\D] [\w\W] [\s\S] 能表示一切字符
. 表示除换行符之外的任意内容
-
[ ] 字符组只要在中括号内的所有字符都符合规则的字符
[ ^ ] 字符组只要在中括号内的所有字符都不符合规则的字符
-
^ 表示一个字符,只匹配一个开头
$ 表示一个字符的结束
^abc$ 表示约束以a开头,c结尾
-
| 或 表示两个规则哟重叠的部分,总是长的在前面,短的在后面
() 分组 表示给一部分正则规定为一组,| 这个符号的作用域就可以缩小了
-
-
量词
-
{ n } 表示只能出现n次
{ n, } 表示至少出现n次
{ n,m } 表示至少出现n次,至多出现m次
-
? 表示匹配0次或者1次,可有可无但是又只能有1个
+
表示匹配一次或者多次*
表示匹配0次或者多次,可有可无但是有可以有多个
-
-
默认贪婪匹配:总是会在符合量词条件的范围为尽量多的匹配
非贪婪匹配(惰性匹配):总是会匹配符合条件范围内尽量小的字符串
元字符 量词 ?x 表示元字符规则在量词范围内匹配,一遇到x就会停止
. * ? x 表示匹配任意的内容多次遇到X就会立即停止
-
元字符
-
元字符量词
-
元字符量词?
-
\d+?x .*?x 爬虫
-
5.17 异常处理
-
基本格式
try:
pass
except Exception as e:
pass
-
-
练习
try:
v = []
v[11111] # IndexError
except ValueError as e:
pass
except IndexError as e:
pass
except Exception as e:
print(e) # e是Exception类的对象,中有一个错误信息。
finally:
print('最后无论对错都会执行')# 练习一 import requests try: ret = requests.get('http://www.google.com') print(ret.text) except Exception as e: print('请求异常') # 练习二 def func(a): try: return a.strip() except Exception as e: pass return False v = func('alex') if not v: print('函数执行失败') else: print('结果是',v)
-
练习题
# 1. 写函数,函数接受一个列表,请将列表中的元素每个都 +100 def func(arg): result = [] for item in arg: if item.isdecimal(): result.append(int(item) + 100) return result # 2. 写函数去,接受一个列表。列表中都是url,请访问每个地址并获取结果。 import requests def func(url_list): result = [] try: for url in url_list: response = requests.get(url) result.append(response.text) except Exception as e: pass return result def func2(url_list): result = [] for url in url_list: try: response = requests.get(url) result.append(response.text) except Exception as e: pass return result func(['http://www.baidu.com','http://www.google.com','http://www.bing.com'])
-
-
主动触发异常
try:
int('123')
raise Exception('阿萨大大是阿斯蒂') # 代码中主动抛出异常
except Exception as e:
print(e)
# 实例
def func():
result = True
try:
with open('x.log',mode='r',encoding='utf-8') as f:
data = f.read()
if 'alex' not in data:
raise Exception()
except Exception as e:
result = False
return result -
自定义异常
# 实例一
class MyException(Exception):
pass
try:
raise MyException('asdf')
except MyException as e:
print(e)
# 实例二
class MyException(Exception):
def __init__(self,message):
super().__init__()
self.message = message
try:
raise MyException('asdf')
except MyException as e:
print(e.message)总结
函数高级 5*
-
嵌套
-
装饰器
模块分类和定义 4*
-
内置模块
-
os
-
sys
-
...
-
-
第三方
-
requests
-
xlrd
-
-
自定义模块
-
文件
-
文件夹 + init.py【包】
-
导入模块
-
sys.path
-
导入
-
import
-
from xx.xxx import xx
-
-