上周内容回顾
正则表达式
正则表达式
import re
phone = input('请输入你个手机号>>>:').strip()
if re.match('^[13|15|18|19][0-9]{9}', phone):
print(phone)
else:
print('输入不合法')
正则表达式之字符组
正则表达式线上测试网址
http://tool.chinaz.com/regex/
正则 |
说明 |
全称 |
[0-9] |
匹配到0到9之间的任意一个数字(包括0和9) |
[0123456789] |
[A-Z] |
匹配A到Z之间的任意一个字母(包括A和Z) |
A-Z所有大写字母 |
[a-z] |
匹配a到z之间的任意一个字母(包括a和z) |
a-z所有小写字母 |
[0-9a-zA-Z] |
数字、小写字母、大写字母都可以 |
|
正则表达式之特殊符号
- 特殊符号在没有量词修饰的情况一个符号一次只会针对一个数据值
编号 |
特殊符号 |
说明 |
1. |
. |
匹配除换行符以为的任意字符 |
2. |
\w |
匹配字母或数字或下划线 |
3. |
\W |
匹配非字母或数字或下划线 |
4. |
\d |
匹配数字 |
5. |
^ |
匹配字符串的开头 |
6. |
$ |
匹配字符串的结尾 |
7. |
a|b |
匹配字符a或者字符b |
8. |
() |
给正则表达式分组 不影响正则表达式的匹配 |
9. |
[] |
匹配字符组的字符 |
10. |
[^] |
匹配除了字符组中的字符的所有字符 |
正则表达式之量词
- 在正则表达式中所有的量词默认都是贪婪匹配(尽可能多的)
编号 |
量词 |
说明 |
1. |
* |
重复零次或更多次(默认就是尽可能多) |
2. |
+ |
重复一次或更多次(默认就是尽可能多) |
3. |
? |
重复零次或一次(默认就是一次) |
4. |
|
重复n次 |
5. |
|
重复n次或更多次 |
6. |
|
重复n到m次 |
贪婪匹配与非贪婪匹配
1.正则表达式之贪婪匹配
<.*> # 有多少就要多少尽可能多要
2.正则表达式之非贪婪匹配
<.*?> # 尽可能少要
所有的量词默认都是贪婪匹配 但是如果在量词后面紧跟了一个问号
那么就是会变成非贪婪匹配
小技巧:以后我们在使用贪婪匹配或者非贪婪匹配的时候一般使用.*或者.*?
并且结束的标志有上述左右两个添加的表达式决定
取消转译
1.正则表达式中取消斜杠与字符的特殊含义 就是在斜杠前面加斜杠
\\n \n
\\\\n \\n
2.在python中有更加简单方便的写法
r'\n'
r'\\n'
re模块
编号 |
关键字 |
作用 |
1. |
findall |
通过正则表达式筛选出所有符合的数据,返回的是列表 |
2. |
finditer |
finditer与findall一致,只不过得出的结果是迭代器,为了节省内存 |
3. |
search |
通过正则表达式匹配到一个符合的条件,就结束 |
4. |
match |
通过正则表达式从头开始匹配,第一个不符合的话,后面就不走了 |
5. |
compile |
可以提前准备好正则,以便后续的反复使用,减少代码的沉于 |
网络爬虫简介
1.什么是互联网
将全世界的计算机连接到一起组成的网络
2.互联网发明的目的是什么
将接入互联网的计算机上面的数据彼此共享
3.上网的本质是什么
基于互联网访问别人计算机上面的资源(有些计算机存在的意义就是让别人访问,这种类型的计算机我们也称之为服务器)
4.网络爬虫的本质
模拟计算机浏览器朝目标网址发送请求回去数据并筛选
只要是浏览器可以访问到的数据网络爬虫理论上都可以
openpyxl模块
主要用于操作excel表格 也是pandas底层操作表格的模块
在python中能够操作excel表格的模块有很多
openpyxl属于近几年比较流行的模块
openpyxl针对03版本之前的excel文件兼容性不好
xlwt、xlrd也可以操作excel表格
兼容所有版本的excel文件 但是使用方式没有openpyxl简单
1.excel版本问题
03版本之前 excel文件的后缀名 .xls
03版本之后 excel文件的后缀名 .xlsx
如果是苹果电脑excel文件的后缀 .csv
2.下载模块
pip3.6 install openpyxl
写入数据
编号 |
关键字 |
作用 |
1. |
Workbook() |
创建excel文件 |
2. |
wb.create_sheet() |
创建文件名,可以指定文件的位置 |
3. |
title |
二次修改文件名 |
4. |
sheet_properties.tabColor |
修改文件名字颜色 |
5. |
save() |
保存文件 |
读取数据
编号 |
关键字 |
作用 |
1. |
sheetnames |
查看excel文件中所有的工作簿名称 |
2. |
max_row |
表示存在数据的最大行数 |
3. |
max_column |
表示存在数据的最大列数 |
random随机数模块
编号 |
关键字 |
作用 |
1. |
random.random() |
返回0到1之间随机的小数 |
2. |
random.randint(1, 10) |
返回1到10之间的数 包括1到10 |
3. |
random.sample() |
随机抽取一个 |
4. |
random.sample() |
随机抽取 可以自定义抽取的个数 |
5. |
random.shuffle() |
乱序 |
hashlib加密模块
1.什么是加密
将明文数据(看得懂)经过处理之后变成密文数据(看不懂)的过程
2.为什么要加密
不想让敏感的数据轻易的泄露
3.如何判断当前数据值是否已经加密
一般情况下如果是一串没有规则的数字字母符合的组合一般都是加密之后的结果
4.加密算法
就是对明文数据采用的加密策略
不同的加密算法复杂度不一样 得出的结果长短也不一样
通常情况下加密之后的结果越长 说明采用的加密算法越复杂
5.常见加密算法
md5 sha系列 hmac base64
subprocess模块
模拟计算机cmd命令窗口
import subprocess
cmd = input('请输入您的指令>>>:').strip()
sub = subprocess.Popen(cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
# stdout执行命令之后正确的返回结果
print(sub.stdout.read().decode('gbk'))
# stderr执行命令报错之后的返回结果
print(sub.stderr.read().decode('gbk'))
log日志模块
一. 什么是日志 日志就类似于是历史记录
二. 为什么要使用日志 为了记录事物发生的事实(史官)
三. 日志模块等级
1.最详细的信息,通常只会出现在诊断问题上
logging.debug('debug等级') # 10
2.程序应该出现的正常状态信息
logging.info('info等级') # 20
3.不会对系统造成影响的非正常流程
logging.warning('warning等级') # 默认从warning级别开始记录日志 30
4.会对系统造成影响的非正常流程,可自我修复,不影响系统稳定性
logging.error('error等级') # 40
5.产生了不可逆的错误,系统无法正常工作
logging.critical('critical等级') # 50