Py-re正则模块,log模块,config模块,哈希加密
9.re正则表达式模块,用于字符串的模糊匹配
元字符:
第一:点为通配符
用.表示匹配除了换行符以外的所有字符
import re
res=re.findall('a..x','adsxwassxddfr')
print(res)
第二:^来匹配最开始的部位
import re
res=re.findall('^a..s','asdswassxddfr')
print(res)
第三:$来匹配最末尾的部位
import re
res=re.findall('a..s$','wassxddfrasds')
print(res)
第四:*用于匹配和前面的字符重复了多少次(0到无穷次)
import re
res=re.findall('as*','wassssbewq')
print(res)
res=re.findall('s*','wassssbewq') #没有s也能匹配到空值
print(res)
第五:+用于匹配和前面的字符重复了多少次(1到无穷次)
import re
res=re.findall('as+','wassssbewq')
print(res)
res=re.findall('s+','wassssbewq') #必须要s才能匹配到
print(res)
第六:?用于匹配和前面的字符重复了多少次(0到1)
import re
res=re.findall('as?','wassssbewq') #多少个重复的都只取1个,去重
print(res)
res=re.findall('s?','wassssbewq') #没有s也能匹配到空值
print(res)
第七:{}用于匹配和前面的字符重复了多少次
范围0到无穷 {0,}
范围1到无穷 {1,}
范围0到1 {0,1}
范围固定次数{固定次数}
import re
res=re.findall('as{0,}','wassssbewq') #多少个重复的都只取1个,去重
print(res)
res=re.findall('s{6}','wassssssbewq') #没有s也能匹配到空值
print(res)
第八:[]字符集
[]字符集里面除了-,^,\
import re
res=re.findall('b[ef]w','wassssbewqbfw') #e或f
print(res)
res=re.findall('b[a-z]w','wassssbewqbfw') #区间a到z
print(res)
res=re.findall('b[^a-z]w','wabewqbfwb3w') #[]里面的^是除了集合内这个元素以外的都匹配
print(res)
#如何找出这条算式最里层的括号
res=re.findall('\([^()]*\)','12+(34+6-2*(2-1))') #()的前面加上\可以转换成没有功能的普通括号
print(res) #要找出的是一个里面没有括号的括号,首先识别出括号\( \)
#然后再中间用集合去除掉括号内还有括号的情况,然后加个*来弄多个字符串的内容
第九:前面的*,+,?等都是贪婪匹配,按最大的去匹配
在后面加上一个?可以使其变成惰性匹配
import re
res=re.findall('as*?','wassssbewq') #*的区间是0-无穷,惰性后s显示0次
print(res)
res=re.findall('as+?','wassssbewq') #+的区间是1-无穷,惰性后s显示1次
print(res)
第十:\用于把有功能的元字符变成普通的字符,使其失去功能。还有获取功能
\d相当于任意十进制数
\D相当于任意非数字字符
\s相当于空白字符
\S相当于非空白字符
\w相当于字母数字字符
\W相当于非字母数字字符
\b相当于任意特殊字符边界,比如空格,&,#等等
import re
res=re.findall('\d','12+(34+6-2*(2-1))')
print(res)
res=re.findall('\D','12+(34+6-2*(2-1))')
print(res)
#如果需要匹配斜杠使用四个斜杠
res=re.findall('c\\\\l','c\laa')
print(res)
#显示的时候会出现两个斜杠,但是没关系,只要能匹配成功就能正常使用判断
第十一:分组和或,search
import re
res=re.findall('as|b','wassssabewq')
print(res)
#可以看见此时的as和b是分开的,可以使用括号分组来解决这个问题
res=re.findall('a(s|b)','wassssabewq') #这里只显示了s和b,因为它优先显示组内的,其它不显示
print(res)
#可以用:?去优先级显示全部
res=re.findall('a(?:s|b)','wassssabewq') #这里只显示了s和b,因为它优先显示组内的,其它不显示
print(res)
#也可以用search来分组,但是search只能匹配一次
res=re.search('(?P<alpha>[a-z]+)(?P<number>\d+)','abcd123we2').group('number')
print(res)
第十二:match,只会从开始进行匹配
第十三:分割split
import re
res=re.split('[ |]','hello abc|asd')
print(res)
第十四:替换操作sub
import re
res=re.sub('\d','A','SD123FS23') #将里面的数字替换成A
print(res)
res=re.sub('\d+','A','SD123FS23')
print(res)
第十五:替换操作subn,并且计算出替换的次数
import re
res=re.subn('\d','A','SD123FS23') #将里面的数字替换成A
print(res)
第十六:通过编译来调用
import re
com=re.compile('\d+')
res=com.findall('sdadw234dsa13')
print(res)
第十七:放进迭代器
import re
res=re.finditer('\d+','sdadw234dsa13')
for i in res:
print(i)
10.logging模块,日志模块
import logging
#以下为日志级别
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
以上显示的时候会发现只显示出了下面三行,因为默认阶级是warning级别
它只显示比warning更危险的级别的
可以按下面改变优先级
import logging
#以下为改变优先级
logging.basicConfig(
level=logging.DEBUG,
filename='日志文件', #把日志记录放进新建的日志txt
filemode='w', #写入模式,会覆盖之前的,永远都是五条,如果不写filemode追加
#模式,写入的日志记录会叠加
format='%(asctime)s %(lineno)d %(message)s' #时间 行号 日志内容
)
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
import logging
logger=logging.getLogger()
logger.setLevel('DEBUG')
fh=logging.FileHandler('日志文件1')
ch=logging.StreamHandler()
fm=logging.Formatter('%(asctime)s %(message)s')
fh.setFormatter(fm)
ch.setFormatter(fm)
logger.addHandler(fh)
logger.addHandler(ch)
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
11.configparse模块,生成配置文件
import configparser
config= configparser.ConfigParser()
config['DEFAULT']={'serve':'123.45.78:56654', #default为主键值
'name':'abcd' #name,serve子键值对
}
config['mod1']={}
topsecret=config['mod1'] #对空的进行添加操作
topsecret['serve']='111.15.178:2224'
topsecret['name']='kasading'
configfile = open ('configexmple.ini','w')
config.write(configfile)
configfile.close()
#——————查——————
config.read('configexmple.ini')
print(config.sections()) #注意,默认是不显示的
print(config.defaults()) #可以打印默认里面的内容
print('ss' in config) #可以判断某个字符串在不在congfig的主键值中
print('mod1' in config)
print(config['mod1']['serve']) #可以像字典一样取内部
print(config.get('mod1','serve'))#连续取值,和上面的那个一样
print(config.options('mod1'))
print(config.items('mod1'))
#——————增——————
config.add_section('m870') #增加主键
config.set('m870','serve','111.222.333:27015')
config.set('m870','name','sb1') #增加子键值对
configfile1 = open ('configexmple1.ini','w')
config.write(configfile1)
configfile1.close()
#——————删——————
config.remove_section('mod1') #删除主键
config.remove_option('DEFAULT','serve') #删除defaul下面的serve
configfile2 = open ('configexmple2.ini','w')
config.write(configfile2)
configfile2.close()
12.hashlib模块,摘要算法,用于明文变成密文
import hashlib
data=input("想要加密的数据")
data1='sb'+data #要在前面加上自己定制的字符,防止反解
obj=hashlib.md5(data1.encode('utf8')) #md5还可以换成SHA256,SHA384
print(obj.hexdigest())
#要验证密码准确性就使用密文互相比较
Py-re正则模块,log模块,config模块,哈希加密的更多相关文章
- python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则
python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess ...
- Qt之分模块log
说明 对于一般的log,使用 qInstallMessageHandler 重定向到文件即可,甚至可以根据日志等级,分类存储.但是并不是适用所有情况,比如,程序运行时动态创建模块,而每个模块需要创建不 ...
- SpringCloud创建Config模块
1.说明 本文详细介绍Spring Cloud创建Config模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 创建Config模块这个子工 ...
- 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时间 ...
- 模块与包&常用模块
一.模块的使用 模块定义:一系列功能的集合体 分为三大类:1.自定义模块 2.内置模块(比如 time,os,sys) 3.第三方模块 模块的表现形式: 1.使用python编写的py文件 2.已被编 ...
- python基础语法13 内置模块 subprocess,re模块,logging日志记录模块,防止导入模块时自动执行测试功能,包的理论
subprocess模块: - 可以通过python代码给操作系统终端发送命令, 并且可以返回结果. sub: 子 process: 进程 import subprocess while Tru ...
- Day5 模块及Python常用模块
模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Mod ...
- Day6 模块及Python常用模块
模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Mod ...
- Python模块:日志输出—logging模块
1. logging介绍 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/ ...
- python学习之算法、自定义模块、系统标准模块(上)
算法.自定义模块.系统标准模块(time .datetime .random .OS .sys .hashlib .json和pickle) 一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1. ...
随机推荐
- DirectX12的初始化
DirectX12的初始化主要分为以下若干步骤: 创建device和gifactory 创建与GPU通信同步相关的objects,command和fence 创建swap chain 为render ...
- phpStudy后门分析及复现
参考文章:https://blog.csdn.net/qq_38484285/article/details/101381883 感谢大佬分享!! SSRF漏洞学习终于告一段落,很早就知道phpstu ...
- Python制作折线图
利用python的第三方包Pygal制作简单的折线图. 申明:本文仅供学习交流使用.源码大部分来自<python编程从入门到实践>:如有侵权,请联系我删除. 1 #!usr/bin/env ...
- nodejs+express+mongodb 快速接口开发
nodejs+mongodb+express API快速生成 使用说明 安装 $ npm install duzq-quick-mongo 建立mongodb数据模型 const mongoose = ...
- 使用Android Studio来阅读Android源码
在编译android系统后,执行下面命令来生成索引. mmm development/tools/idegen/mv ./out/target/product/tiny4412/obj/GYP/sha ...
- JavaWeb代码复用
servlet部分,可能用得到的复用的代码: 1.dopost设置字符 request.setCharacterEncoding("utf-8"); response.setCha ...
- 自定义 简单 底部tab
项目地址:https://gitee.com/jielov/music-netease-api.git 先创建三个页面 分别为 home.vue , classify.vue, my.vue . 以下 ...
- SICP 课程总结 & 复习
SICP 课程总结 & 复习 小作文 有赖于那个终极的.伟大的.命定的教务系统,我选上了这门课:SICP,Structure and Interpret of Computer Program ...
- 风炫安全web安全学习第三十节课 命令执行&代码执行基础
风炫安全web安全学习第三十节课 命令执行&代码执行基础 代码执行&命令执行 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 远程系统命令执行 ...
- loj #6179. Pyh 的求和 莫比乌斯反演
题目描述 传送门 求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^m \varphi(ij)(mod\ 998244353)\) \(T\) 组询问 \(1 \leq ...