周结

  • 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模块的更多相关文章

  1. python3之xml&ConfigParser&hashlib&Subprocess&logging模块

    1.xml模块 XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. XML 被设计用来传输和存储 ...

  2. 常用模块(hashlib,configparser,logging)

    常用模块(hashlib,configparser,logging) hashlib hashlib 摘要算法的模块md5 sha1 sha256 sha512摘要的过程 不可逆能做的事:文件的一致性 ...

  3. 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时间 ...

  4. 内置函数 hashlib configparser logging 模块 C/S B/S架构

    1.内置函数 # 内置的方法有很多 # 不一定全都在object中 # class Classes: # def __init__(self,name): # self.name = name # s ...

  5. python之模块(hashlib、logging)

    hashlib模块 加密的概念 加密,是以某种特殊的算法改变原有的数据,当其他人获得数据时,也无法了解数据的内容.简单的来说,就是将明文(人看得懂)数据通过一些手段变成密文数据(人看不懂),密文数据的 ...

  6. hashlib,configparser,logging模块

    一.常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...

  7. hashlib,configparser,logging,模块

    一,hashlib模块 算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一 ...

  8. hashlib、logging模块

    hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通 ...

  9. Python模块:日志输出—logging模块

    1. logging介绍 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/ ...

  10. 常用模块之hashlib,configparser,logging模块

    常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定 ...

随机推荐

  1. .Net 7 C#11 原始字符串

    .Net7 的到来的同时,也带来了 C# 11,而令我最期待的就是 C# 11 的 原始字符串了,当我知道这个的时候,简直比过年还要开心. 非原始字符串 首先我们看看现在写字符串的方式 var str ...

  2. aardio + VBScript 混合开发

    aardio 与 VBScript 可以直接混合编程,VBScript 属于 Windows 系统自带组件 -- 可以方便地生成独立 EXE 程序. 快速入门 首先创建 VBScript 解释器,aa ...

  3. 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段

    1. 问题:怎么给线上表加字段? 工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段? 比如:给下面的用户表(user)添加年龄(age)字段. CREATE TABLE `user` ( `id ...

  4. Mysql编程中遇到的小错误

    我在mysql中创建的数据库表语句为如下 create table grade (id int not null, name varchar(255), desc varchar(255), prim ...

  5. Golang可能会踩的58个坑之初级篇

    前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷.如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到. 如果花时间学习官方 ...

  6. Hbase之API基本操作

    API之框架 private static Admin admin = null; private static Connection connection = null; private stati ...

  7. jquery+bootstrap学习笔记

    最近小颖接了个私活,客户要求用jquery和bootstrap来实现业务需求,小颖总结了下在写的过程中的一下坑,来记录一下 1.动态加载html文件 switch (_domName) { case ...

  8. sql面试50题------(11-20)

    文章目录 11.查询至少有一门课与学号为'01'的学生所学课程相同的学生的学号和姓名 12.查询和'01'号同学所学课程完全相同的其他同学的学号 13.查询两门及其以上不及格课程的同学的学号,姓名及其 ...

  9. ROS2时间同步(python)

    最近1周一直研究ROS2的时间同步,翻越很多博客,很少有人使用ROS2进行时间同步的代码,无奈不断尝试与源码阅读,终于将其搞定, 为此,本博客将介绍基于python的ROS2的时间同步方法. 本博客内 ...

  10. 题解 SP24 FCTRL2 - Small factorials

    双倍经验. 题意 给\(t\) 组数据,求每组数据中\(n\) 的阶乘. 思路 \(n≤100\) . \(100!\) 肯定爆int128,所以高精呗. 那么就是一个阶乘的板子了,应该不难的吧. 具 ...