首页 > 其他分享 >10-30内容回顾

10-30内容回顾

时间:2022-10-30 18:22:56浏览次数:32  
标签:10 匹配 回顾 正则表达式 30 模块 加密 数据 我们

内容总结

  • 正则表达式/re模块使用
  • openpyxl模块与爬虫实战
  • hashlib,subprocess,logging模块

正则表达式/re模块

正则表达式一般是用于匹配数据以及筛选数据
正则表达式是一门单独的语法,他可以在任意编程语言上进行使用
正则表达式是通过一些特殊符号的组合出不同的含义并且根据这些含义来筛选出符合条件的数据

正则表达式之字符组:
[012345678910]  # 表示匹配[]中的任意一个数据值
[0-9]  # 表示匹配[]中 0-9 之间的任意的一个数据值
[a-z]  # 表示匹配a-z 之间的任意一个数据值
[A-Z]  # 表示匹配A-Z 之间的任意一个数据值
[0-9a-zA-Z]  在字符组中它们都是或的关系,并且是一个一个字符进行匹配

正则表达式之特殊符号:
特殊符号与字符组一样,如果没有量词的参与都是一个一个字符进行匹配
\w  # 表示匹配字母数字下划线
\W(大写)  # 表示匹配除了字母数字下划线之外的所有数据
\d  # 表示匹配纯数字
.  # 表示匹配除了换行符以外的所有数据
^ # 表示匹配与上尖号后面的字符一致的字符串开头的字符
$ # 表示匹配与doller符前面面的字符一致的字符串结尾的字符
a|b # 表示匹配 a或b  |为或的意思
()  # 表示分组,不影响其他匹配
[]  # 字符组
[^]  # 表示除了上尖号后面字符以外的所有字符

正则表达式之量词
正则表达式默认情况下都是贪婪匹配>>>>>>尽可能多的去匹配
*   #  表示匹配 0 次或多次 默认匹配(无穷大次)
+   #  表示匹配 1 次或多次 默认匹配(无穷大次)
?  # 匹配0次或一次	作为量词来说意义不大,主要用于非贪婪匹配
{n}  # 表示重复 n 次
{n,} # 表示重复 n或更多次  默认是多次
{n,m}  # 表示重复 n,m次  默认是m次

量词必须结合表达式一起使用,并不能单独出现,并且只影响左手边第一个表达式

正则表达式之转义符
因为正则表达式中很多字母\ 的组合有特殊含义 所以 如果我们需要单独匹配\n字符的时候就需要在他千米那在添加一个转义符 \\n 这样就可以表达我们的含义

正则表达式的应用场景:
我们一般是在需要匹配精准数据时需要使用正则表达式帮助我们筛选数据
比如 手机号的开头以及结尾 身份证号的长度 QQ号的 长度等等。。
这可以让我们获取用户输入的数据更加的精确


贪婪匹配:
所有量词都是贪婪匹配,如果想要变为非贪婪匹配,我们只需要在量词后面加上问号
待匹配的文本
<strip>larb(123)</script>
我们使用正则表达式来匹配内容
<.*>
# 我们会得到 <strip>larb(123)</script> 这一条匹配结果
因为.* 就是贪婪匹配,除换行符之外的所有数据都可以被匹配
<>  前后的精准匹配由于与文本中的首尾都一样,所以在贪婪匹配下会看量词左右的匹配条件
# 我们在使用.* 贪婪匹配的时候,结束条件一般在左右明确指定
非贪婪匹配
<.*?>
由于在量词后面加了问号,则不属于贪婪匹配
此时就会根据左右两边的精准匹配条件进行匹配
得到<strip>  </script> 这两个个结果

re 模块
re 模块就是我们在Python中使用正则表达式的模块
我们可以通过re模块中的findall方法传参数  
findall 有两个参数 一个是正则表达式 一个是我们需要匹配的数据  (列表形式)
finditer 跟findall 一样 但是会返回一个迭代器对象 这样可以让我们对大型文件数据进行获取
findall 方法是有优先展示的优先展示括号内正则表达式匹配到的内容

search/match
search() # 匹配一个符合条件的数据就立刻结束
match()  #  判断开头是否为 正则表达式匹配的内容,如果不是返回None 如果是 返回re.Match
compile() # 当某个正则表达式需要频繁使用,我们就可以把他封装成一个变量 可以配合findall 使用

requests/openpyxl模块使用

第三方模块的下载及使用:
第三方模块的下载我们可以通过终端里输入
pip install 模块名   进行下载第三方模块
但是我们如果有不同版本的python,那么我们要确定好Pip 是哪一个python版本中的工具
pip2.7 install 模块名  # 这样就是指定在 python2.7版本的pip 工具下载第三方模块


我们在使用pip工具安装第三方模块时候可能会遇到报错
'''下载第三方模块可能会遇到的问题
1. 报错并且有警告信息:
	WARNING: You are using pip version 20.2.1
	可能是由于你的pip工具版本较低,需要更新
	d:\python38\python.exe -m pip install --upgrade pip
	更新完成后再次执行下载第三方模块的命令即可
2.报错并且含有time out 关键字
	说明当前网络不稳定,只需要重新尝试几次或者切换稳定网络即可解决
3.报错没有关键字
	百度解决!
	有一些模块时需要提前准备一些环境才可以顺利下载
4.下载速度很慢
pip install 模块名==版本号 -i 仓库地址
'''


requests 模块
import requests
get() get方法是朝指定网址发送请求并获取网址页面数据(相当于在浏览器地址栏中输入网址并回车访问)



openpyxl 模块操作
官方文档:https://openpyxl.readthedocs.io/en/stable/tutorial.html
    上面有openpyxl的使用说明
from openpyxl import Workbook
# 创建excel文件
变量名 = Workbook()
# 保存excel文件
变量名.save('文件名.xlsx')
# 在一个excel文件中创建多个工作簿(sheet)
home_info_excel = Workbook()
home_sheet1 = home_info_excel.create_sheet('就是牛')

我们可以看到excel文件本身就会有一个sheet工作簿
所以我们新增的工作簿都在他的后面
我们也可以通过在creat_sheet('工作簿名称',0) 加参数来控制我们新建工作簿的位置
后面的数字为索引位置

我们也可以二次修改工作簿名称:
原有工作簿.title = '想要修改的工作簿名字'
# 切记,需要先关闭excel在操作,不然会报错
工作簿.sheet_properties.tabColor = "1072BA"  # 修改工作簿的颜色

填写表格文件中数据的方式:

工作簿.append([1,2,3,4]) # 表头字段  每行1,2,3,4
工作簿.append([1,2,3,4])  

工作簿['坐标'] = 212  # 在当前工作簿指定坐标上写212数据

工作簿.cell(row=1, column=1, value='212')  # row 为行 column 为列 也相当于坐标
# 相当于在第一行第一列写数据212
填写数学公式:
工作簿['坐标'] = '=sum(坐标:坐标)'  

hashlib/logging/subprocess

加密模块 hashlib
我们可以通过hashlib模块选择所需的加密算法进行数据加密的操作
加密就是将明文数据转换为密文数据
加密之后的数据值无法反向解密
我们只能通过明文加加密算法变为加密的密文
并且我们可以对数据值加密时做加盐操作
在加密的时候增添干扰项以保证数据的安全
加密操作主要用于:
用户数据加密
文件安全性校验
文件内容一致性校验
大文件内容加密策略
	如果大文件中内容比较多,我们应该把大文件分为几部分,然后只读文件部分的部分内容,最后汇总为一个密文
    这样的化既保证了安全性,又可以节省我们加密文件的时间,可以大大提升我们加密的效率
    
    
subprocess模块
我们主要时模拟操作系统终端,输入命令并获取结果
import subprocess
res = subprocess.Popen(
	'ipconfig',  # 操作系统要执行的命令
      shell = True, # 固定配置
      stdin=subprocess.PIPE,  # 输入命令
      stdout=subprocess.PIPE, # 输出结果
)
print('正确结果:',res.stdout.read().decode('gbk'))  # 因为中国电脑系统底层编码还剩gbk不是utf8,输出内容也是二进制字符串所以我们需要decode方法解码


logging模块
我们主要可以通过这个模块进行日志记录
日志的等级分为:
debug
info
warning
error
critical
我们通过日志的基础配置
文件处理
文件等级的选择来输出我们想要记录的日志信息
通常我们直接导入日志配置字典进行参数修改即可

标签:10,匹配,回顾,正则表达式,30,模块,加密,数据,我们
From: https://www.cnblogs.com/ddsuifeng/p/16841866.html

相关文章

  • Faker团队展示10.30
    Faker团队展示团队特点及宣言团队特点:人狠话多、人菜瘾大团队宣言:有cat了,不想和没cat的人说话了   团队成员介绍队长:20201215王馨瑶个人简......
  • 10的第三次周报
    目录json补充正则匹配字符组特殊符号量词网络爬虫第三方模块第三方模块的下载安装exceljson补充取消中文转义ensuer_ascii=False正则匹配直接匹配字符直接填写需要......
  • 10.30周日,复盘
    复盘一级标题二级标题三级标题c编程小感悟迭代的使用当一个变量名,不断出现新值替代旧值时,此时该变量就是迭代变量。写代码最忌讳的:一步到位初学者很忌讳一下把代......
  • 1035.uncrossed-lines 不相交的线
    问题描述1035.不相交的线解题思路只是1143.最长公共子序列的另一种描述代码#include<vector>usingstd::vector;classSolution{public:intmaxUncrossed......
  • 1005.maximize-sum-of-array-after-k-negations K次取反后最大化数组和
    问题描述1005.K次取反后最大化的数组和解题思路贪心算法代码classSolution{staticboolcmp(inta,intb){returnabs(a)>abs(b);}public:intlar......
  • 300.longest-increasing-subsequence 最长递增子序列
    问题描述300.最长递增子序列解题思路关键在于,dp[i]表示什么含义便于解这道题,子序列不一定连续,所以为了便于求解,dp[i]应该表示为以nums[i-1]结尾的最长严格递增子序列......
  • 2022.10.30每日一题
    DaimayuanOnlineJudge-出栈序列判断题目描述现在有一个栈,有\(n\)个元素,分别为\(1,2,…,n\)。我们可以通过push和pop操作,将这\(n\)个元素依次放入栈中,然后从栈......
  • 10/30 基于SeedUbuntu16.04的缓冲区溢出实验
    sudosysctl-wkernel.randomize_va_space=0gcc-fno-stack-protectorexample.cgcc-zexecstack-otesttest.c/*call_shellcode.c//设置四个寄存器eax,ebx,ecx,ed......
  • 【C Primer PLus 摘录】第 10 章 数组和指针(未完)
    CPrimerPlus摘录第10章数组和指针10.1数组数组由数据类型相同的一系列元素组成。通过声明数组告诉编译器数组中内含多少元素和这些元素的类型。编译器根据......
  • 第五周自我回顾
    目录一、正则表达式1、简介2、内容介绍1.字符组2.特殊符号3.量词4.贪婪匹配和非贪婪匹配5.转义符6.使用建议二、re模块常见操作方法:1.findall()2.finditer()3.search()4.ma......