首页 > 其他分享 >第五周自我回顾

第五周自我回顾

时间:2022-10-30 15:24:20浏览次数:33  
标签:匹配 回顾 自我 第五 查找 内容 模块 logging 日志

目录

一、正则表达式

1、简介

正则表达式是一种独立的知识点,他有很丰富的内容,但是我们在python中只需要用到一部分内容,因此我们只需要记住常用的符号表示的意思即可

2、内容介绍

1.字符组

[0-9]匹配所有的数字(也可以数字全写上,表达的意思一样)

[a-z]匹配所有的你小写字母

[A-Z]匹配所有的大写字母

[0-9a-zA-Z]匹配所有的数字和字母

2.特殊符号

. 匹配除换行符以外的任意字符

\w 匹配数字、字母、下划线

\W 匹配非数字、非字母、非下划线

\d 匹配数字

^ 匹配字符串的开头

$ 匹配字符串的结尾

a|b 匹配a或者b(管道符的意思是或)
() 给正则表达式分组 不影响表达式的匹配功能
[] 字符组 内部填写的内容默认都是或的关系
[^] 取反操作 匹配除了字符组里面的其他所有字符

3.量词

*	匹配零次或多次 默认是多次(无穷次)
+	匹配一次或多次 默认是多次(无穷次)
?	匹配零次或一次 作为量词意义不大主要用于非贪婪匹配
{n}	重复n次
{n,}	重复n次或更多次 默认是多次(无穷次)
{n,m}	重复n到m次 默认是m次

4.贪婪匹配和非贪婪匹配

所谓贪婪匹配就是在匹配的时候尽可能多的获取符合匹配条件的内容,非贪婪匹配反之。

在默认情况下都是使用贪婪匹配的,在贪婪匹配的字符后面加上量词?就可以让他变成非贪婪匹配

5.转义符

当我们在匹配\n的时候会出现匹配到了换行符的情况。这个时候我们就需要在换行符的撬棍前面再加一个撬棍变成\\n的形式来查找,如果查找字符有两个撬棍就需要在正则表达式中写四个撬棍

6.使用建议

对于正则我们只要会用就好了,可以去网上找别人写好的现成的结果

二、re模块

re模块就是python中用来实现正则表达式功能的一个模块

常见操作方法:

下面操作方法基本都是需要两个参数,第一个是正则表达式,第二个是查找的对象

1.findall()

查找所有的符合条件的内容,一次性输出结果

2.finditer()

查找所有符合条件的内容,但是不会输出,相当于变成了一格迭代器对象

3.search()

查找符合条件的内容,如果找到了就把他删除了,只会匹配一个对象

4.match()

判断查找对象的开头是否符合条件,找不到就返回None

5.compile()

把正则表达式做成模版方便频繁调用

6.split()

查找内容然后删除,查找到的对象会被删除,生成一个空字符串

7.sub()

进行替换操作,有三个参数,第三个参数是控制替换次数,结果是字符串

8.subn()

跟sub一样,但是返回的结果会放到元组中

小知识点

1.分组优先

就是在查找的时候如果用上了小括号,就会出现括号的内容,在被查找的时候优先显示加上?:就可以取消这样的设置

2.分组别名使用search的时候可以使用group来获得结果,同时我们在后面更上小括号和索引位置就可以根据位置获得数据值

三、第三方模块下载与使用

主要分成两种cmd中下载和pycharm中下载

在cmd中下载的时候需要使用命令:

pip+版本号 install 模块名称

pip+版本号 install -i 仓库地址 模块名称

因为我们可能会出现使用很多种版本的python 的情况,因此在使用命令的时候要区分pip的版本,如果我们不想使用默认的仓库(在国外,下载速度慢),可以使用第二个命令,指定到国内的下载地址

当我们遇到错误或是警告的时候可以先看注释,如果注释有提供代码就可以直接使用,如果没有就需要去百度搜索相应的解决措施。

在pycharm中我们导入模块是在file——settings中点击项目名称选择第一个选项然后再到右边的窗口中双击,弹出的小窗口就是下载模块的窗口,选中或搜索对应名称然后点击右下角的install就可以下载

出现超时的提示,说明当前网络环境不好

下载速度很慢可以使用国内仓库地址

四、网络爬虫之requests模块

requests模块是用来模仿浏览器给网站发送请求的

1、get方法

内部参数传入网址,模拟浏览器发送请求

2、headers方法

用来模拟什么参数的,防止被人家检测出来我们是在爬网页

3、text

查看查找到的文本内容

4、content

查看内容返回二进制内容

5、url

返回完整都 url地址

五、自动化办公领域之openpyxl模块

简单介绍

讲解之前需要说明,excel03版本之前的格式是xls,03版本之后是xlsx

openpyxl对于xls格式可能会出现兼容性不好的问题导致错误。

openpyxl只是操作办公领域文件的一种模块,还有很多功能更强大的模块,比如pandas

功能简介:

1、Workbook()

from openpyxl import Workbook

导入模块

创建一个excel文件

2、load_workbook

from openpyxl import load_workbook

导入模块

打开一个excel文件

3、append()

可以一行一行加入 数据值

4、根据单元格位置修改或添加内容

可以指定单元格位置然后添加内容,或是修改内容

5、create_sheet

创建表(sheet),内部可以写两个参数,第一个是创的表格的名字,第二个是创的表格的位置(根据索引排序)

6、表格名称.sheetnames

返回所有sheet的名称

7、title

可以更改工作簿名称

8、save( )

保存数据

六、hashlib加密模块

是一个有很多种加密算法的模块,比如md5、shark家族、sha家族,hmac、base64等加密算法

加密就是为了保护数据的安全,比如可以防止数据库泄漏的时候用户密码被人看到

加密的时候需要知道,加密的数据时不能解密的

加密一样的内容,如果分开加密,最后的结果还是一样的。

但是这需要注意,算法越复杂密文越长,明文越长,密文也越长,可是这并不意味着密文越长越好,需要根据使用情况来分辨

当然,我们可以有办法查找密文对应的内容,网上有些人用穷举的方式来查找匹配的密文得到明文结果

真正使用的时候会使用加盐处理,或是动态加盐的方式来处理,提高安全性。就是写上别的内容当成干扰项

当我们在网上查找文件的时候,也用到了加密

比如一个文件每隔一定距离就取100字节,然后所有的字节放一起加密就会得到一个密文,如果两个文件密文一样就说明这是两个一样的文件。

七、subprocess模块

这是一个用于模拟cmd窗口的模块,我们可以在内部运行一些cmd中的命令,并获得输出结果,因为用的不多,我们记一下关键部分就好了

import subprocess

res = subprocess.Popen(
    'asdas',  # 操作系统要执行的命令
    shell=True,  # 固定配置
    stdin=subprocess.PIPE,  # 输入命令
    stdout=subprocess.PIPE,  # 输出结果
)
print('正确结果', res.stdout.read().decode('gbk'))  # 获取操作系统执行命令之后的正确结果
print('错误结果', res.stderr)  # 获取操作系统执行命令之后的错误结果

上面所有的东西都是可以跟模版一样更改的套用的

八、logging日志模块

这是一个日志模块,用于记录日志内容(atm中有用到)

这里也跟上面的模块一样,会使用即可(会通过修改参数改变功能)

虽然有很多模版,但是使用的时候用日志字典的模版就可以了(功能全面又看着直观)

模版如下

import logging
import logging.config
# 定义日志输出格式 开始
standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
                  '[%(levelname)s][%(message)s]'  # 其中name为getlogger指定的名字
simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
# 自定义文件路径
logfile_path = 'a3.log'
LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        },
    },
    'filters': {},  # 过滤日志
    'handlers': {
        # 打印到终端的日志
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'simple'
        },
        # 打印到文件的日志,收集info及以上的日志
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'standard',
            'filename': logfile_path,  # 日志文件
            'maxBytes': 1024 * 1024 * 5,  # 日志大小 5M
            'backupCount': 5,
                # 这里两个参数的意思是一个日志文件最多写5M,最多可以存在五个不同的日志文件,但是当数量达到五个之后就会出现最早的那个会被删除,
                # 然后再产生一个新的文件(类似于覆盖了最早的那个文件)
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    'loggers': {
        # logging.getLogger(__name__)拿到的logger配置
        '': {
            'handlers': ['default', 'console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',
            'propagate': True,  # 向上(更高level的logger)传递
        },  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
        # '购物车记录': {
        #     'handlers': ['default','console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
        #     'level': 'WARNING',
        #     'propagate': True,  # 向上(更高level的logger)传递
        # },  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
    },
}
logging.config.dictConfig(LOGGING_DIC)  # 自动加载字典中的配置
# logger1 = logging.getLogger('购物车记录')
# logger1.warning('尊敬的VIP客户 晚上好 您又来啦')
# logger1 = logging.getLogger('注册记录')
# logger1.debug('jason注册成功')
logger1 = logging.getLogger('红浪漫顾客消费记录')
# 当这里的getLogger内部的参数如果字典中没有,就会自动使用字典中名称为空的那个模版来执行
logger1.debug('慢男 猛男 骚男')


标签:匹配,回顾,自我,第五,查找,内容,模块,logging,日志
From: https://www.cnblogs.com/zhihuanzzh/p/16841352.html

相关文章

  • 面向对象基础回顾
    基本知识回顾:类与对象:成员变量,方法,构造器(初始化类的对象)内部块,代码块一个JAVA文件可以定义多个类,但是只有一个类用PUBLIC修饰,且该修饰的类名必须为JAVA代码文件名称 ......
  • 【10.22-10.28】博客精彩回顾
    一、优秀文章推荐1.​​MySQL上亿大表如何优化?​​​2.​​使用Shell脚本进行语句循环​​3.​​数据结构【C语言版】二叉树的结构和遍历的实现​​4.​​构建FTP文件传输......
  • chap4 循环结构、chap6 回顾数据类型和表达式 第七小组 学习总结
    chap4循环结构第七小组学习总结循环语句有以下几种:1.for循环语句 (1)使用方法:     for(初始条件;循环条件;结束操作){循环语句;}(2)优点:循环有序,层层递进  ......
  • 加瓦自我重塑&进阶之路【Ongoing】
    1JavaSE黑马程序员全套Java教程_Java基础入门视频教程,零基础小白自学Java入门教程_哔哩哔哩_bilibilistage1day01-java基础语法day02-java基础语法day03-switch&循......
  • 自我矛盾
    最近家里闹疫情,老妈开着隔壁村子1w买的代步小车车带着爷爷奶奶去做核酸。我就想啊,以后即使我买了宝马车,开着它在北京上海的高速飞驰,但是我竟然也不能拉着自己最关爱的亲......
  • 【Java】来回顾下JWT知识点,了解一下什么是JWT?
    (回顾下JWT知识点)1.什么是JWT在介绍JWT之前,我们先来回顾一下利用token进行用户身份验证的流程:1.客户端使用用户名和密码请求登录。2.服务端收到请求,验证用户名和密码......
  • day21.内容回顾及总结
    前端体系结构及知识点一阶段(html+css)基础的页面布局(div弹性盒子布局)seo优化(搜索引擎优化)动画效果html5和css3多端适配(rem)二阶......
  • Linux常用命令及使用技巧(第五节课线上课程shell简单入门与系统管理与维护介绍)-转换
    Linux常用命令及使用技巧课程学习安排一、shell基础入门与语法分析二、系统管理与维护命令三、文件管理与编辑命令四、压缩与解压缩命令五、磁盘管理与维护命令六、网络设......
  • openEuler Meetup 广州站 精彩回顾
    10月21日,openEulerMeetup广州站成功举办,本次Meetup上就openEuler嵌入式平台openEulerEmbedded、智能调优工具A-Tune、智能运维项目A-ops、高性能用户协议栈Gazelle、操......
  • EasyMABuilder:让企业拥有更快的自我开发能力
    早前,国际权威IT研究与顾问咨询机构Gartner发布了《2022新兴技术和趋势影响雷达图》报告,围绕关键推动技术、智能世界、无处不在且透明的安全性和生产力革命四大主题,对23种最......