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. ...
随机推荐
- Python-自动化测试面试
1.以你做过的项目,举例来说一下你的自动化测试是怎么做的? 参考答案:就拿简历上的ecshop项目来说吧,在编写脚本前,我们会对系统进行评估,确认这个系统可不可以实现UI自动化,如果可以的话,就筛选出 ...
- 简单了解一下 Nginx
一.Nginx 基本认识 1.Nginx 是什么? Nginx 是一款开源的.轻量级的.高性能的 HTTP 服务器 以及 反向代理服务器. 特点是 占有内存少.并发能力强. 2.Nginx 用来干什么 ...
- [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks
[论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...
- spring-quartz整合
摘要 spring ,springboot整合quartz-2.3.2,实现spring管理jobBean 本文不涉及 JDBC存储的方式,springboot yml配置也没有 可自行百度 谷歌 本 ...
- Qt学习笔记-安装phonon模块
如果想要运行使用Qt中的phonon写的程序,需要满足一下条件:Qt基本库.Qt phonon库.phonon_backend(后端插件)和多媒体播放后台.下面以linux(Fedora 12)系统. ...
- 你的项目中使用过哪些JSTL标签?
项目中主要使用了JSTL的核心标签库,包括< c:if>.< c:choose>.< c: when>.< c: otherwise>.< c:f ...
- 关于STM32的CAN的过滤器
关于STM32的CAN的过滤器STM32普通型芯片的CAN有14组过滤器组,互联型有28组过滤器组.一般我们用的都是普通型的,所以在本文中可以说STM32有14组过滤器组.根据配置,每1组过滤器组可以 ...
- 前端面试题归类-HTML2
一. SGML . HTML .XML 和 XHTML 的区别? SGML 是标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言,是所有电子文档标记语言的起源. HTML 是超文本标记 ...
- python之scrapy篇(一)
一.首先创建工程(cmd中进行) scrapy startproject xxx 二.编写Item文件 添加要字段 # -*- coding: utf-8 -*- # Define here the ...
- Java优雅停机
Java的优雅停机通常通过注册JDK的ShootDownHook实现,当系统接受到退出指令后,首先标记系统处于退出状态,不再接受新的消息,然后将积压的消息处理完,最后调用资源回收接口将资源销毁,最后各 ...