首页 > 其他分享 >总结

总结

时间:2022-10-30 22:25:05浏览次数:42  
标签:总结 logging 默认 模块 print 匹配 日志

一.常用内置模块

1.正则表达式

主要是通过一些特殊的符号组合成特殊含义去字符串中筛选符合条件的结果

1)字符组

1.字符组默认匹配方式是:一个一个的匹配(一个符号一次匹配一个内容)
2.字符组内所有的数据默认都是或的关系

字符组简写 字符组全称 含义
[0-9] [0123456789] 匹配0~9的任意一个数字
[A-Z] [ABC...XYZ] 匹配A~Z的任意一个字母
[a-z] [abc...xyz] 匹配a~z的任意一个字母
[0-9a-zA-Z] 匹配0~9任意数字、大小写任意字母

2)特殊符号

1.字符组默认匹配方式是:一个一个的匹配(一个符号一次匹配一个内容)

特殊符号 含义
. 匹配处换行符外的任意字符
\w 匹配数字、字母、下划线
\W 匹配非数字、非字母、非下划线
\d 匹配数字
^ 匹配字符串的开头
$ 匹配字符串的结尾
^数据$ 两者组合使用可以精确限制匹配的内容
a|b 匹配a或b
() 给正则表达式分组,不影响表达式的匹配
[ ] 字符组内部填写的内容默认都是或的关系
[^] 取反操作 匹配除了字符组内填写的其他字符

3)量词

1.正则表达式默认情况下都是贪婪匹配(尽可能多的匹配)
2.量词不能单独使用,必须结合表达式一起,且只能影响左边第一个表达式

量词 含义
***** 匹配0次或多次 默认是多次
+ 匹配1次或多次 默认是多次
匹配0次或1次 默认是1次
{n} 重复n次 写几次就是几次
{n,} 重复n次或更多次 默认是多次
{n,m} 重复n到m次 默认是m次

4)贪婪匹配和非贪婪匹配

所有量词都是贪婪匹配,非贪婪匹配要在量词后加问号

5)转义符

\n      匹配的是换行符
\\n     匹配的是文本\n
\\\\n   匹配的是文本\\n

2.re模块(正则模块)

1)findall

查找所有符合正则表达式要求的数据 结果是一个列表

2)finditer

查找所有符合正则表达式要求的数据 结果是一个迭代器对象

3)search

匹配到一个符合条件的数据就立刻结束

4)match

从头开始匹配 如果头不符合就结束

5)compile

提前准备好正则,后续可以反复使用

6)split

分割

7)sub、subn

替换

8)分组优先展示

findall分组优先展示括号内正则表达式匹配到的内容

?:可取消分组优先展示

9)分组别名

(?P<可起别名>)

二.网络爬虫简介

爬虫就是编写代码模拟计算机浏览器向目标网址发送请求获取数据并筛选出想要的数据

三.第三方模块

1.第三方模块简介

第三方模块就是别人写好的需要下载的模块

2.第三方模块下载

1)cmd终端下载

pip后跟3.8 可在不同版本解释器下去下载对应模块

1.基础句式
pip install 模块名

2.切换镜像源句式
pip install 模块名 -i 镜像源地址

3.下载指定版本模块
pip install 模块名==版本号 -i 镜像源地址

2)pycharm提供下载方式

有多种,1.在代码中协商模块后有一个灯泡,点击后选择下载。

2.File>>Settings>>对应项目中>>python Interpreter>>添加下载

3.第三方模块常见报错

1)报错并有警告信息

eg:
    WARNING: You are using pip version 20.2.1;

#这种是因为pip工具版本过低,拷贝后面的执行命令更新即可:
python38 -m pip install --upgrade pip

2)报错并有Time out关键字

网不好

3)报错没有关键字

百度搜

4)下载速度慢

切换镜像源

"""
清华大学 :https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科学技术大学 :http://pypi.mirrors.ustc.edu.cn/simple/
华中科技大学:http://pypi.hustunique.com/
豆瓣源:http://pypi.douban.com/simple/
腾讯源:http://mirrors.cloud.tencent.com/pypi/simple
华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple/
"""

4.第三方模块—request模块(网络爬虫模块)

其实就是模仿浏览器发送网络请求的模块

import request

res=requests.get('http://www.baidu.com')
#print(res.content) #获取bytes二进制类型的网页数据
print(res.text) #获取字符串类型的网页数据

5.第三方模块—openpyxl模块(自动化办公)

当excel文件打开时不能做任何修改

不要忘记保存!!!

1)创建excel文件

from openpyxl import Workbook  # 导入模块,Workbook是用来创建文件的

# 创建一个excel文件
wb = Workbook()
# 在excel文件中创建工作薄
wb1 = wb.create_sheet('学生名单')
# 在excel文件中创建工作薄 并 让该工作薄位置在最前面
wb2 = wb.create_sheet('老师名单', 0)
# 修改工作簿名称
wb2.title = '学生成绩单'
# 修改工作薄颜色
wb2.sheet_properties.tabColor = '1072BA'

"""
这里放写入数据的操作
"""

# 保存该excel文件
wb.save(r'学生信息.xlsx')

2)在excel工作簿中写入数据

1)第一种写入方式:
wb2['A1'] = '张三' # 在A1单元格中写入'张三'

2)第二种写入方式:
wb2.cell(row=2,column=1,value='李四') # 在单元格第2行,第1列,写入'李四'

3)第三种写入方式:(批量写入)
#在单元格中最上方分别写入数据(如果有数据则在数据下一行写入)
wb2.append(['姓名','年龄','成绩'])
wb2.append(['王五','18','90'])

3)在excel工作薄中读取数据操作

openpyxl读写分离,读采用的是from openpyxl import load_workbook

openpyxl一般公司有专门的人负责读, 我们只负责写

# 1.查看文件中所有工作簿名称
print(wb.sheetnames)  # ['第一个sheet页', '第二个sheet页', 'Sheet']

# 2.1.查看某工作簿中有几行数据,空数据默认为1行
print(wb1.max_row)  # 3
# 2.2查看某工作簿中有几列数据,空数据默认为1列
print(wb1.max_column)  # 2

# 3.1.读取wb1中A1单元格的数据
print(wb1['A1'].value)  # 姓名
# 3.2.读取wb1中第2行第1列的数据
print(wb1.cell(row=2,column=1).value)  # jason

# 4.读取整行数据并组成列表
for i in wb1.rows:
    print([j.value for j in i])  # ['姓名', '年龄'] ['jason', '18']  ['torry', '20']

# 5.读取整列数据并组成列表
for i in wb1.columns:
    print([j.value for j in i])  # ['姓名', 'jason', 'torry']  ['年龄', '18', '20']

6.第三方模块—pandas模块

封装了openpyxl模块的模块,主要用来操作表格。爬虫爬到的数据用pandas可以保存在表格中

import pandas

d1 = {
    '公司名称': ['腾讯', '飞讯', '跑讯'],
    '公司地址': ['上海', '杭州', '深圳'],
}

df = pandas.DataFrame(d1)  # 将字典转成pandas里面的DataFrame数据结构
df.to_excel(r'公司信息.xlsx')  # 保存为excel文件

7.第三方模块—hashlib加密模块

1)加密的含义

加密就是把明文数据经过处理编变成密文数据,这个过程就叫加密

2)常见的加密算法

md5、sha系列、hmac、base64

3)实际应用

import hashlib
# 获取用户输入密码
password = input('输入密码:').strip()
# 选择加密算法
md5 = hashlib.md5()
# 传入明文数据(传入的必须是二进制)
md5.update(password.encode('utf8'))
# 获取加密密文
res = md5.hexdigest()
print(res)

4)加盐处理

就是给密码加一些干扰项让密码更不容易被破解。

动态加盐就是放一些随机变化的干扰项,如时间、用户名等

8.第三方模块—subprocess模块

模拟操作系统终端 执行操作系统命令并获取结果

import subprocess

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

9.第三方模块—logging日志模块

1)日志的五个级别

import logging

logging.debug('debug等级')  # 10 默认不显示
logging.info('info等级')  # 20 默认不显示
logging.warning('警告的')  # 30 默认从warning级别开始记录
logging.error('已经发生的')  # 40
logging.critical('灾难性的')  # 50

2)日志的四个组成部分

1.loger对象:产生日志
2.filter对象:过滤日志(基本不用,因为产生日志时就可以控制想要的日志内容)
3.handler对象:输出对象
4.format对象:日志格式

3)日志配置字典

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,
            '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('红浪漫顾客消费记录')
logger1.debug('慢男 猛男 骚男')

标签:总结,logging,默认,模块,print,匹配,日志
From: https://www.cnblogs.com/lvqingmei/p/16842449.html

相关文章

  • python学习第五周总结
    正则表达式基础字符组特殊符号量词贪婪匹配和非贪婪匹配转义符re模块re模块补充说明第三方模块下载网络爬虫模块之requests模块hashlib加......
  • ES6与JavaScript学习总结
    菜鸟的ES6与JavaScript学习总结说明一、概述(1)什么是javascript?(2)什么是ES6(3)ES6和JavaScript的关系(4)ES6的浏览器兼容情况二、语法(1)变量(2)箭头函数(3)解构赋值(4)数组操作(5)字符串......
  • 2022-2023-1 20221310 《计算机基础与程序设计》第九周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEE......
  • 2022-2023-1 20221422 《计算机基础与程序设计》第九周学习总结
    作业信息这个作业属于哪个课程<班级的链接>2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>2022-2023-1计算机基础与程序设计第一周作业)......
  • #yyds干货盘点#数据可视化总结
    最近在做可视化相关的项目,借这篇文章今天谈谈数据可视化相关的技术解决方案。数据可视化旨在借助于图形化手段,清晰有效地传达与沟通信息(来源于bd).在我们生活中最常见的,就有......
  • 2022-2023-1 20221320 《计算机基础与程序设计》第九周学习总结
    学期(2022-2023-1)学号(20221320)《计算机基础与程序设计》第九周学习总结作业信息各项要求具体内容<班级的链接>2022-2023-1-计算机基础与程序设计<作业要求......
  • 第五周总结
    周总结正则表达式案例:注册手机号基本要求:手机号必须是11位、手机号必须是以1315171819开头、必须是纯数字python结合正则实现:importrephone_number=input('......
  • weekfour——周总结
    weekfour——周总结正则表达式前戏'''案例:京东注册手机号校验基本需求:手机号必须是11位、手机号必须以1315开头、必须是纯数字'''phone=input('请输入您的手......
  • 10月30总结
    10月30总结一、正则表达式正则表达式是一些特殊的符号组合在一起产生一些特殊含义,它能帮助我们方便的检查一个字符串中符合条件的数据值。正则表达式线上测试网址:http:......
  • 2022-2023-1 20221312 《计算机基础与程序设计》第九周学习总结
    班级链接:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)作业要求:2022-2023-1《计算机基础与程序设计》教学进程-娄......