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. ...
随机推荐
- matplotlib的学习16-animation动画
from matplotlib import pyplot as plt from matplotlib import animation import numpy as np fig, ax = p ...
- Elasticsearch 学习二(请求流程).
一.写入数据 1.ES 的任意节点都可以作为协调(Coordinating)节点接受请求(包括新建.索引或者删除请求),每个节点都知道集群中任一文档位置: 2.协调节点会通过 routing 字段计算 ...
- 【剑指offer】04 重建二叉树
题目地址:重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不 ...
- Linux工具包
Linux的工具包 JDK 版本:14 百度网盘:链接: https://pan.baidu.com/s/1hWqGVmsElOCBufMuscPXzw 密码:st3y 安装步骤: 1.使用S ...
- Spring-Boot配置文件web性能(服务器)配置项(常用配置项为红色)
参数 介绍 server.address 服务器应绑定到的网络地址 server.compression.enabled = false 如果启用响应压缩 server.compression.exc ...
- Cassandra与Kafka的集成
Cassandra和Kafka经常一起用于微服务架构中.本文将介绍几种Cassandra和Kafka常见的集成模式. 简介 如果您的开发团队乐于接纳微服务架构的优点,那么您就会了解到,Kafk ...
- 在ubuntu上利用科大讯飞的SDK实现语音识别-语义识别等功能
首先,参考科大讯飞的官方sdk中的案例,实现和机器的日常对话和控制. 具体步骤: 1. 通过麦克风捕获说话的声音,然后通过在线语音识别获取语音中的字符. 2. 将获取到的字符上传到科大讯飞的语义识别中 ...
- JAVA数据结构(十一)—— 堆及堆排序
堆 堆基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,最坏,最好,平均时间复杂度都是O(nlogn),不稳定的排序 堆是具有以下性质的完全二叉树:每个节点的值都大于或等 ...
- Java学习日报7.15
package oddor;import java.util.Scanner;public class Oddor{ public static void main(String args[]) { ...
- KafkaProducer 简析
使用方式 KafkaProducer 发送消息主要有以下 3 种方式: Properties properties = new Properties(); properties.setProperty ...