周结

  • 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.日志模式

最新文章

  1. 逻辑回归算法的原理及实现(LR)
  2. iOS - CALayer相关(CATransform3D)
  3. keepalived安装
  4. 设计模式:中介者模式(Mediator)
  5. Vistual Studio 2012更换皮肤
  6. 运维命令rsync
  7. (简单) POJ 1961 Period,扩展KMP。
  8. idea 中设置成公司规范的代码格式
  9. Cookie中的HttpOnly详解
  10. SUCTF--WEB
  11. HVR又一次load的时候须要将schedule suspend掉
  12. [Swift]LeetCode55. 跳跃游戏 | Jump Game
  13. C - 树的统计Count - 树链剖分
  14. write RE validation
  15. grpc(一)grpc-java之helloworld
  16. React系列文章:Babel编译JSX生成代码
  17. linux系统Centos环境下搭建SVN服务器及权限配置
  18. PHP笔试题及答案
  19. 剑指offer——面试题23:链表中环的入口节点
  20. python7

热门文章

  1. 一文读懂Apache Geode缓存中间件
  2. jq判断页面滚动条进行样式修改
  3. 工厂方法在Spring源码中的运用
  4. python基础作业2
  5. Linux基础_3_文件/文件夹权限管理
  6. Mysql索引(究极无敌细节版)
  7. 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。
  8. 一天五道Java面试题----第六天(1)
  9. 洛P8109题解
  10. c语言求输入的任一整数的各位数之和