内容总结
- 正则表达式/re模块使用
- openpyxl模块与爬虫实战
- hashlib,subprocess,logging模块
正则表达式/re模块
正则表达式一般是用于匹配数据以及筛选数据
正则表达式是一门单独的语法,他可以在任意编程语言上进行使用
正则表达式是通过一些特殊符号的组合出不同的含义并且根据这些含义来筛选出符合条件的数据
正则表达式之字符组:
[012345678910] # 表示匹配[]中的任意一个数据值
[0-9] # 表示匹配[]中 0-9 之间的任意的一个数据值
[a-z] # 表示匹配a-z 之间的任意一个数据值
[A-Z] # 表示匹配A-Z 之间的任意一个数据值
[0-9a-zA-Z] 在字符组中它们都是或的关系,并且是一个一个字符进行匹配
正则表达式之特殊符号:
特殊符号与字符组一样,如果没有量词的参与都是一个一个字符进行匹配
\w # 表示匹配字母数字下划线
\W(大写) # 表示匹配除了字母数字下划线之外的所有数据
\d # 表示匹配纯数字
. # 表示匹配除了换行符以外的所有数据
^ # 表示匹配与上尖号后面的字符一致的字符串开头的字符
$ # 表示匹配与doller符前面面的字符一致的字符串结尾的字符
a|b # 表示匹配 a或b |为或的意思
() # 表示分组,不影响其他匹配
[] # 字符组
[^] # 表示除了上尖号后面字符以外的所有字符
正则表达式之量词
正则表达式默认情况下都是贪婪匹配>>>>>>尽可能多的去匹配
* # 表示匹配 0 次或多次 默认匹配(无穷大次)
+ # 表示匹配 1 次或多次 默认匹配(无穷大次)
? # 匹配0次或一次 作为量词来说意义不大,主要用于非贪婪匹配
{n} # 表示重复 n 次
{n,} # 表示重复 n或更多次 默认是多次
{n,m} # 表示重复 n,m次 默认是m次
量词必须结合表达式一起使用,并不能单独出现,并且只影响左手边第一个表达式
正则表达式之转义符
因为正则表达式中很多字母\ 的组合有特殊含义 所以 如果我们需要单独匹配\n字符的时候就需要在他千米那在添加一个转义符 \\n 这样就可以表达我们的含义
正则表达式的应用场景:
我们一般是在需要匹配精准数据时需要使用正则表达式帮助我们筛选数据
比如 手机号的开头以及结尾 身份证号的长度 QQ号的 长度等等。。
这可以让我们获取用户输入的数据更加的精确
贪婪匹配:
所有量词都是贪婪匹配,如果想要变为非贪婪匹配,我们只需要在量词后面加上问号
待匹配的文本
<strip>larb(123)</script>
我们使用正则表达式来匹配内容
<.*>
# 我们会得到 <strip>larb(123)</script> 这一条匹配结果
因为.* 就是贪婪匹配,除换行符之外的所有数据都可以被匹配
<> 前后的精准匹配由于与文本中的首尾都一样,所以在贪婪匹配下会看量词左右的匹配条件
# 我们在使用.* 贪婪匹配的时候,结束条件一般在左右明确指定
非贪婪匹配
<.*?>
由于在量词后面加了问号,则不属于贪婪匹配
此时就会根据左右两边的精准匹配条件进行匹配
得到<strip> </script> 这两个个结果
re 模块
re 模块就是我们在Python中使用正则表达式的模块
我们可以通过re模块中的findall方法传参数
findall 有两个参数 一个是正则表达式 一个是我们需要匹配的数据 (列表形式)
finditer 跟findall 一样 但是会返回一个迭代器对象 这样可以让我们对大型文件数据进行获取
findall 方法是有优先展示的优先展示括号内正则表达式匹配到的内容
search/match
search() # 匹配一个符合条件的数据就立刻结束
match() # 判断开头是否为 正则表达式匹配的内容,如果不是返回None 如果是 返回re.Match
compile() # 当某个正则表达式需要频繁使用,我们就可以把他封装成一个变量 可以配合findall 使用
requests/openpyxl模块使用
第三方模块的下载及使用:
第三方模块的下载我们可以通过终端里输入
pip install 模块名 进行下载第三方模块
但是我们如果有不同版本的python,那么我们要确定好Pip 是哪一个python版本中的工具
pip2.7 install 模块名 # 这样就是指定在 python2.7版本的pip 工具下载第三方模块
我们在使用pip工具安装第三方模块时候可能会遇到报错
'''下载第三方模块可能会遇到的问题
1. 报错并且有警告信息:
WARNING: You are using pip version 20.2.1
可能是由于你的pip工具版本较低,需要更新
d:\python38\python.exe -m pip install --upgrade pip
更新完成后再次执行下载第三方模块的命令即可
2.报错并且含有time out 关键字
说明当前网络不稳定,只需要重新尝试几次或者切换稳定网络即可解决
3.报错没有关键字
百度解决!
有一些模块时需要提前准备一些环境才可以顺利下载
4.下载速度很慢
pip install 模块名==版本号 -i 仓库地址
'''
requests 模块
import requests
get() get方法是朝指定网址发送请求并获取网址页面数据(相当于在浏览器地址栏中输入网址并回车访问)
openpyxl 模块操作
官方文档:https://openpyxl.readthedocs.io/en/stable/tutorial.html
上面有openpyxl的使用说明
from openpyxl import Workbook
# 创建excel文件
变量名 = Workbook()
# 保存excel文件
变量名.save('文件名.xlsx')
# 在一个excel文件中创建多个工作簿(sheet)
home_info_excel = Workbook()
home_sheet1 = home_info_excel.create_sheet('就是牛')
我们可以看到excel文件本身就会有一个sheet工作簿
所以我们新增的工作簿都在他的后面
我们也可以通过在creat_sheet('工作簿名称',0) 加参数来控制我们新建工作簿的位置
后面的数字为索引位置
我们也可以二次修改工作簿名称:
原有工作簿.title = '想要修改的工作簿名字'
# 切记,需要先关闭excel在操作,不然会报错
工作簿.sheet_properties.tabColor = "1072BA" # 修改工作簿的颜色
填写表格文件中数据的方式:
工作簿.append([1,2,3,4]) # 表头字段 每行1,2,3,4
工作簿.append([1,2,3,4])
工作簿['坐标'] = 212 # 在当前工作簿指定坐标上写212数据
工作簿.cell(row=1, column=1, value='212') # row 为行 column 为列 也相当于坐标
# 相当于在第一行第一列写数据212
填写数学公式:
工作簿['坐标'] = '=sum(坐标:坐标)'
hashlib/logging/subprocess
加密模块 hashlib
我们可以通过hashlib模块选择所需的加密算法进行数据加密的操作
加密就是将明文数据转换为密文数据
加密之后的数据值无法反向解密
我们只能通过明文加加密算法变为加密的密文
并且我们可以对数据值加密时做加盐操作
在加密的时候增添干扰项以保证数据的安全
加密操作主要用于:
用户数据加密
文件安全性校验
文件内容一致性校验
大文件内容加密策略
如果大文件中内容比较多,我们应该把大文件分为几部分,然后只读文件部分的部分内容,最后汇总为一个密文
这样的化既保证了安全性,又可以节省我们加密文件的时间,可以大大提升我们加密的效率
subprocess模块
我们主要时模拟操作系统终端,输入命令并获取结果
import subprocess
res = subprocess.Popen(
'ipconfig', # 操作系统要执行的命令
shell = True, # 固定配置
stdin=subprocess.PIPE, # 输入命令
stdout=subprocess.PIPE, # 输出结果
)
print('正确结果:',res.stdout.read().decode('gbk')) # 因为中国电脑系统底层编码还剩gbk不是utf8,输出内容也是二进制字符串所以我们需要decode方法解码
logging模块
我们主要可以通过这个模块进行日志记录
日志的等级分为:
debug
info
warning
error
critical
我们通过日志的基础配置
文件处理
文件等级的选择来输出我们想要记录的日志信息
通常我们直接导入日志配置字典进行参数修改即可
标签:10,匹配,回顾,正则表达式,30,模块,加密,数据,我们
From: https://www.cnblogs.com/ddsuifeng/p/16841866.html