周结

  • 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. Intellij IDEA个人常用快捷键

    分享一下个人常用快捷键. 说明:字母排序规则遵循字母表(a->z) 快捷键 介绍 ctrl+b 快速打开当前光标处的类或方法 ctrl+d 复制当前光标所在行至下一行 ctrl+e 打开最近的文 ...

  2. 挑战海量数据:基于Apache DolphinScheduler对千亿级数据应用实践

    点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler 精彩回顾 近期,初灵科技的大数据开发工程师钟霈合在社区活动的线 ...

  3. WindivertDotnet快速发Ping

    1 前言 WindivertDotnet是面向对象的WinDivert的dotnet异步封装,其提供如下的发送数据方法: ValueTask<int> SendAsync( WinDive ...

  4. http://localhost:8282/user/findsomeuser[object%20Object]

    查看vue中的方法的访问路径是否填写正确. 后端:

  5. servlet技术--使用注解模拟用户登录实现页面跳转

    文章目录 1.servlet体系结构 2.servlet技术特点 3.servlet和jsp的区别 4.servlet开发 1.servlet体系结构 servlet实质就是按servlet规范编写的 ...

  6. 2022年最新最详细IDEA关联数据库方式、在IDEA中进行数据库的可视化操作(包含图解过程)

    文章目录 1.使用IDEA关联Mysql数据库的详细操作步骤 1.1 打开侧边栏的Database 2.2. 选择要连接的数据库(Mysql) 2.3 .输入要连接的数据库.用户名.密码 2.4 .点 ...

  7. DQL-limit分页

    DQL-limit分页 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能-limit. 一.limit概述 Limit是 ...

  8. 聊一聊对一个 C# 商业程序的反反调试

    一:背景 1.讲故事 前段时间有位朋友在微信上找到我,说他对一个商业的 C# 程序用 WinDbg 附加不上去,每次附加之后那个 C# 程序就自动退出了,问一下到底是怎么回事?是不是哪里搞错了,有经验 ...

  9. 云数据库时代,DBA将走向何方?

    摘要:伴随云计算的迅猛发展,数据库也进入了云时代.云数据库不断涌现,产品越来越成熟和智能,作为数据库管理员的DBA将面临哪些机遇和挑战?又应该具备什么能力,才能应对未来的不确定性? 本文分享自华为云社 ...

  10. MYSQL ---mysql 数据导入与导出

    1.使用SQLyog导出MySQL中的数据库 打开SQLyog → 右击你想要保存的数据库 → 选择"Backup/Export"→ 选择"Backup Database ...