周结之json补充、正则re模块、hashlib模块、logging模块
周结
- json补充
- 正则表达式、re模块
- 第三放模块下载、网络爬虫
- 加密模块hashlib
- 日志模块loging模块
- 模拟操作系统subprocess模块
json补充
ensure_ascii参数
# json.dump(),json.dumps() 都包含关键字形参 ensure_ascii 这个参数默认为True
# 这个参数的解释为:
如果ensure_ascii为true,会将非ascii码的字符转换成json字符串。
如果ensure_ascii为false,则dump输出可以包含非ascii字符
如:
import json
str_obj = '小松'
json_str = json.dumps(str_obj)
print(json_str) # "\u5c0f\u677e" # 注意双引号
json_str2 = json.dumps(str_obj, ensure_ascii=False)
print(json_str2) # "小松" # 注意双引号表示这还是一个json字符串
print(json_str2 == str_obj) # False
user_dict = {'username':'小松','password':'123'}
json_obj = json.dumps(user_dict)
print(json_obj) # {"username": "\u5c0f\u677e", "password": "123"}
json_obj2 = json.dumps(user_dict,ensure_ascii=False)
print(json_obj2) # {"username": "小松", "password": "123"}
总结:所以在写入文件时想要在写入的文件能够看出被序列换的中文字符 可以让ensure_ascii为False
正则表达式
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串
使用正则表达式 可以从杂乱无章的字符串中获取你想要的内容
字符组:
[0-9] 匹配0到9任意一个数
[a-z] 匹配26个小写英文字母
[0-9a-zA-Z] 匹配数字或者小写字母或者大写字母
[0-9a-fA-F] 可以匹配数字,大小写形式的a~f,用来验证十六进制字符
字符:
. 匹配除换行符以外的任意字符
\w 匹配字母或下划线或数字(匹配变量名)
\W 匹配出非数字、非字母、非下划线
\d 匹配数字
^ 匹配字符串的开头
$ 匹配字符串的结尾
a|b 匹配a或者b
() 给正则表达式分组 不影响表达式的匹配功能
[] 字符组 内部填写的内容默认都是或的关系
[^] 取反操作 匹配除了字符组里面的其他所有字符
\n 匹配一个换行符
量词:
1.量词不能单独使用
2.量词制作用与他前面的表达式 如果前面是一个组 则作用于这个组 miku\d{3} 量词{3}只影响\d
3.在默认情况下都是贪婪匹配 也就是尽可能的多匹配字符
* 匹配零次或多次 默认是多次(无穷次)
+ 匹配一次或多次 默认是多次(无穷次)
? 匹配零次或一次 作为量词意义不大主要用于非贪婪匹配
{n} 重复n次
{n,} 重复n次或更多次 默认是多次(无穷次)
{n,m} 重复n到m次 默认是m次
贪婪与非贪婪匹配
1.可以通过在量词后面加?将贪婪匹配变为非贪婪匹配
2.非贪婪匹配的特性就是:尽可能的少匹配字符
3.量词默认都是贪婪匹配的 如{n,m}默认匹配m次 尽可能匹配多的字符
转义符补充
\n 匹配的是换行符
\\n 匹配的是文本\n
\\\\n 匹配的是文本\\n
ps:如果是在python中使用 还可以在字符串前面加r取消转义
re模块
re模块是python内置的正则表达式模块 在需要做字符串匹配时可以考虑用
re.findall(正则表达式, 待匹配的字符串) 会将其匹配到的字符存在一个列表里返回
re.finditer跟findall只有一点不同 他不返回列表 而是返回一个迭代对象
re.search 匹配到一个符合条件的就立刻结束 没匹配到就返回None
re.match 从字符串开头开始匹配 如果开头没匹配到 后面的就不用看了 直接返回None
re.compile 当一个正则要重复反复使用 可以考虑使用compile将其做成模板
# findall 分组优先展示特性:优先展示括号内正则表达式匹配到的内容
import re
res = re.findall('www.*?com', 'www.baidu.com www.4399.com') # 不分组的情况
print(res) # ['www.baidu.com', 'www.4399.com']
res2 = re.findall('www(.*?)com', 'www.baidu.com www.4399.com') # 括号内的为一组
print(res2) # ['.baidu.', '.4399.'] # 优先展示组内
# 取消分组优先展示特性 ?:
import re
res = re.findall('www(.*?)com', 'www.baidu.com www.4399.com') # 括号内的为一组
print(res) # ['.baidu.', '.4399.'] # 优先展示组内
res = re.findall('www(?:.*?)com', 'www.baidu.com www.4399.com') # 使用?:取消分组优先特性
print(res) # ['www.baidu.com', 'www.4399.com']
取别名;?P<名字自定义>
第三方模块的下载
1.下载第三方模块的句式:
pip install 模块名
下载第三方模块临时切换仓库
pip install 模块名 -i 仓库地址
下载第三方模块指定版本(不指定默认是最新版)
pip install 模块名==版本号 -i 仓库地址
2.pycharm提供更方便、更直观的下载第三方模块的方式,并且不需要输入命令。
打开settings设置里下载
request模块
import requests
r = requests.get(url=url,headers=headers)
print(type(r)) # <class 'requests.models.Response'>
r.encoding = 'utf8' # 指定编码
print(type(r.text),type(r.content)) # content是转换为二进制码 注意text、content都是request包内的方法
print(type(r.status_code),r.status_code) # 状态码
print(type(r.cookies),r.cookies) # 获取cookies
print(type(r.history),r.history) # 请求历史
办公自动化openpyxl模块
# 1.excel文件的后缀名问题
03版本之前
.xls
03版本之后
.xlsx
# 2.操作excel表格的第三方模块
xlwt往表格中写入数据、wlrd从表格中读取数据
兼容所有版本的excel文件
openpyxl最近几年比较火热的操作excel表格的模块
03版本之前的兼容性较差
ps:还有很多操作excel表格的模块 甚至涵盖了上述的模块>>>:pandas
# 3.openpyxl主要用于数据的写入 至于后续的表单操作它并不是很擅长 如果想做需要更高级的模块pandas
wb = workbook() 创建一个workbook对象
res = wb.create_sheet(名字,0) 创建工作簿 将其修改为第一个工作簿
wb.save(r'haha.xlsx') 保存该excel文件
写入数据的三种方法:
# 填写数据的方式1
wb4['F4'] = 666 # 将F4单元格写入666
# 填写数据的方式2
wb4.cell(row=3, column=1, value='miku') # row行 column列
# append方法
一个append对应excel中的一行 会将列表数据值一个个放入单元格内
hashlib加密模块
将明文转成密文让人无法看懂 保证数据的安全性
常见的算法有:md5 base64 hmac sha系列(密文越长对应使用的算法越高级)
语法:
md5 = hashlib.md5 选择算法
md5.update(字符.encode('utf8')) 传入明文转成二进制类型
res = md5.hexdigiest() 获取密文
加密算法不变时,输入的明文一样,输出的密文也就一样
可以分多次传入和一次性传入 只要拼接起来是相同的即可
subprocess模块
模拟操作系统终端执行命令并获取结果
logging日志模块
日志是有级别的 只有warning及以上的日志才会在终端显示
日志的级别
五种级别 debug info warning error critical
日志模块要求
代码无需掌握 但是得会CV并稍作修改
logging 使用流程
1.产生日志
2.过滤日志 基本不用 因为在日志产生阶段就可以控制想要的日志内容
3.输出日志
4.日志模式
周结之json补充、正则re模块、hashlib模块、logging模块的更多相关文章
- python3之xml&ConfigParser&hashlib&Subprocess&logging模块
1.xml模块 XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. XML 被设计用来传输和存储 ...
- 常用模块(hashlib,configparser,logging)
常用模块(hashlib,configparser,logging) hashlib hashlib 摘要算法的模块md5 sha1 sha256 sha512摘要的过程 不可逆能做的事:文件的一致性 ...
- s14 第5天 时间模块 随机模块 String模块 shutil模块(文件操作) 文件压缩(zipfile和tarfile)shelve模块 XML模块 ConfigParser配置文件操作模块 hashlib散列模块 Subprocess模块(调用shell) logging模块 正则表达式模块 r字符串和转译
时间模块 time datatime time.clock(2.7) time.process_time(3.3) 测量处理器运算时间,不包括sleep时间 time.altzone 返回与UTC时间 ...
- 内置函数 hashlib configparser logging 模块 C/S B/S架构
1.内置函数 # 内置的方法有很多 # 不一定全都在object中 # class Classes: # def __init__(self,name): # self.name = name # s ...
- python之模块(hashlib、logging)
hashlib模块 加密的概念 加密,是以某种特殊的算法改变原有的数据,当其他人获得数据时,也无法了解数据的内容.简单的来说,就是将明文(人看得懂)数据通过一些手段变成密文数据(人看不懂),密文数据的 ...
- hashlib,configparser,logging模块
一.常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...
- hashlib,configparser,logging,模块
一,hashlib模块 算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一 ...
- hashlib、logging模块
hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通 ...
- Python模块:日志输出—logging模块
1. logging介绍 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/ ...
- 常用模块之hashlib,configparser,logging模块
常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定 ...
随机推荐
- 3_Nginx
一. Nginx介绍 1.1 引言 为什么要学Nginx 问题1: 客户端到底要将请求发送给哪台服务器 问题2: 如果所有客户端的请求都发送给了服务器1 问题2: 客户端发送的请求可能是申请动态资源的 ...
- 30分钟掌握 Webpack
本文基于:峰华前端工程师--30分钟掌握Webpack 为什么使用 Webpack 在我们进行传统网页开发中,会在 index.html 中引入大量的 js 和 css 文件,不仅可能会导致命名冲突, ...
- python解释器下载及注意事项
python解释器 python解释器下载 python解释器下载官网:https://www.python.org/downloads/windows/ 目前比较常用的python版本有python ...
- linux基础总结
linux的特点 - 免费的/开源 - 支持多线程/多用户 - 安全性好 - 对内存和文件管理优越 关机命令 shutdown -h now(立即进行关机 ...
- 纯Vue实现网页日常任务清单小功能(数据存储在浏览器)
任务清单可以极大提高我们的工作效率.哪些事情办了.哪些事情代办.哪些是紧急需要办的事情等等. 在组件化编码实战3的基础上进一步改进.将原先的数据保存的浏览器中.就可以做到关闭网页也不会丢失数据的情况 ...
- Python学习笔记----列表、元组和字典的基础操作
文章目录 一.列表的基本操作 1.1 修改列表中的某个数据 1.2 获取某个元素的返回值(返回的是索引) 1.3 在列表中插入新的元素 1.4 删除列表中的元素 1.5 +和* 二.内置的函数和方法 ...
- sql面试50题------(21-30)
文章目录 21.查询不同老师所教不同课程平均分从高到低显示 23.使用分段[100,85),[85,70),[70,60),[<60] 来统计各科成绩,分别统计各分数段人数:课程ID和课程名称 ...
- Windows7下驱动开发与调试体系构建——4.在x64下使用汇编代码(x86下的_asm)
目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html asm文件设置 在vs x64中无法使用_asm关键字,需要使用.asm文件. 按第 ...
- Go语言核心36讲02
你好,我是郝林,今天我分享的主题是,学习专栏的正确姿势. 到了这里,专栏的全部内容已经都推送到你的面前了.如果你已经同步学习完了,那么我要给你点一个大大的赞! 还没有看完的同学也不要着急,因为推送的速 ...
- 【云原生 · Kubernetes】Jenkins+Gitlab+Rancher+Docker 实现自动构建镜像的 CI 平台(一)
1 准备 Jenkins+Gitlab 实验环境 1.1 准备实验环境:恢复到以一下快照:该环境已经配置好 jenkins+gitlab+sonar-配置通 主机角色: IP 地址 运行的服务 硬件配 ...