本周总结
json模块补充
针对中文会自动转码 我们在查看的时候不方便
我们要让他不自动转码 ensure_ascii = False
正则表达式
字符组
[0123456789] 匹配0到9任意一个数(全写)
[0-9] 匹配0到9任意一个数(缩写)
[a-z] 匹配26个小写英文字母
[A-Z] 匹配26个大写英文字母
[0-9a-zA-Z] 匹配数字或者小写字母或者大写字母
ps:字符串内所有的数据默认都是或的关系
特殊符号
. 匹配除换行符以外的任意字符
\w 匹配数字、字母、下划线
\W 匹配非数字、非字母、非下划线
\s 匹配任意的空白符
\S 匹配非空白符
\d 匹配数字
\D 匹配非数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开头
$ 匹配字符串的结尾
两者组合使用可以非常精确的限制匹配内容
a|b 匹配a或者b(管道符的意思是或)
() 给正则表达式分组 不影响表达式的匹配功能
[] 字符组 内部填写的内容默认都是或的关系
[^] 取反操作 匹配除了字符组里面的其他所有字符
量词
* 匹配零次或多次 默认是多次(无穷次)
+ 匹配一次或多次 默认是多次(无穷次)
? 匹配零次或一次 作为量词意义不大主要用于非贪婪匹配
{n} 重复n次
{n,} 重复n次或更多次 默认是多次(无穷次)
{n,m} 重复n到m次 默认是m次
贪婪匹配与非贪婪匹配
所有的量词都是贪婪匹配如果想要变成非贪婪匹配只需要在量词后面加问号
.*属于经典的贪婪匹配 使用它结束条件一般在左右明确指定
.*?非贪婪匹配
转义符
'''斜杠与字母的组合有时候有特殊含义'''
\n 换行符
\\n 匹配文本\n
re模块
在python中如果想要使用正则 可以考虑re模块
import re
# findall
res = re.findall('a','abababa') # findall(正则表达式,待匹配的文本)
print(res) # ['a','a','a','a']结果符合条件的数据,组织成列表
# search
res = re.search('a','oboboba') # search(正则,待匹配文本)
print(res.group()) # a
res = re.search('a','obobob') # search(正则,待匹配文本)
print(res) # None 没有符合条件的数据返回None
# match
res = re.match('a','oabaonm') # match(正则表达式,待匹配的文本)
print(res) # None 从字符串的开头匹配 如果没有则直接返回None 类似于给正则自动加了^ 如果符合也只获取一个就结束了
res = re.match('a', 'aoabaonm')
print(res.group()) # a 没有则无法调用group() 直接报错
# finditer
res = re.finditer('a','jhasgafadsda') # finditer(正则表达式,待匹配的文本)
print(res) # 结果是一个迭代器对象 为了节省空间
print([obj.group()for obj in res]) # ['a','a','a','a']
obj = re.compile('\d+') # 匹配数字
print(re.findall(obj,'shd123jmhf234eqwji342'))
# ['123','234','342']
re模块补充
1.分组优先
2.分组别名
第三方模块的下载与使用
第三方模块:别人写的模块 一般情况功能都特别强大
如果想使用第三方模块必须要先下载才可以使用
下载第三方模块:
1.pip工具
注意每个解释器都有pip工具 如果我们的电脑有多个版本解释器那么我们在使用pip的时候一定要注意到底用的哪一个 否则极其容易出现使用的是A版本的解释器然后用B版本的pip下载模块
为了避免pip冲突 我们在使用的时候可以添加对应的版本号
python36 pip3.6
下载第三方模块的句式
pip install 模块名
下载第三方模块临时切换仓库
pip install 模块名 -i 仓库地址
下载第三方模块指定版本(不指定默认是最新版)
pip install 模块名==版本号 -i 仓库地址
2.pycharm提供的快捷方式
settings>project>python interprter
双击任意一个模块名称或者左下角加号按钮
在搜索框输入你想要下载的模块即可
并且可以在左侧勾选specify version选择版本
# pycharm可以换源
左下方点击manage repositoires管理地址即可
网络爬虫模块之requests模块
requests模块能够模拟浏览器发送网络请求
import requests
朝指定网址发送请求获取页面数据
获取bytes类型网页数据(二进制)
指定编码
获取字符串的网页数据
自动化办公领域之openpyx模块
"""以后我们会接触到很多第三方模块 那么统一的学习策略其实就是看文档"""
pip3 install openpyxl
# 将文档中的代码拷贝执行查看效果从而推导功能
"""
excel文件的版本及后缀
2003版本之前 excel的文件后缀是xls
2003版本之后 excel的文件后缀是xlsx、csv
在python中能够处理excel文件的模块有很多 其中最出名的有
xlrd、xlwt分别控制excel文件的读写 能够兼容所有版本的文件
openpyxl针对03版本之前的兼容性可能不好 但是功能更加强大
hashlib加密模块
1.什么是加密
将明文处理成密文数据 让人无法看懂
2.为什么加密
保证数据的安全
3.如何判断数据是否加密
一串没有规律的字符串(数字、字母、符号)
4.密文长短有何讲究
密文越长表示使用的加密算法(数据的处理过程)越复杂
5.常见的密文算法
md5、base64、hmac、sha系列
6.加密算法的基本操作
import hashlib
# 1.选择加密算法
md5 = hashlib.md5()
# 2.传入明文数据
md5.update(b'hello')
# 3.获取加密密文
res = md5.hexdigest()
print(res) # 5d41402abc4b2a76b9719d911017c592
logging日志模块
1.如何理解日志
简单的理解为是记录行为举止的操作(历史史官)
2.日志的级别
五种级别
3.日志模块要求
代码无需掌握 但是要会CV并稍作修改
import logging
# logging.debug('debug message')
# logging.info('info message')
# logging.warning('warning message')
# logging.error('error message')
# logging.critical('critical message')
file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf8',)
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
handlers=[file_handler,],
level=logging.ERROR
)
logging.error('你好')
日志的组成
1.产生日志
2.过滤日志
基本不用 因为在日志产生阶段就可以控制想要的日志内容
3.输出日志
4.日志格式
标签:10,匹配,res,30,re,模块,logging,日志,周报
From: https://www.cnblogs.com/super-xz/p/16841941.html