Python 模块(二)
1 logging 模块
logging有两种的配置的方式,configure、logger
1.1 config方式
import logging
'''
日志的配置:config模式
只能选择在屏幕或者在文件输出
'''
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s [%(lineno)s] %(message)s' ,filename='log.txt',filemode='a')
# logging.debug('debug message') 只有这些内容的时候是只显示在屏幕
# logging.info('info message')
# logging.warning('warning message')
# logging.error('error message')
# logging.critical('critical message')
logging.info('info message')
通过logging.basicConig可以配置输出的格式,level=DEBUG,还可以是INFO、WARNING、ERROR、DIGITAL,这个的优先级是从上往下的。设置好了哪一个就会显示他后面的。
1.2 logger
推荐用logger
默认的情况是输出到屏幕的
import logging
logger=logging.getLogger()logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
可通过
import logginglogger=logging.getLogger()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')fh=logging.FileHandler('test.txt') # 文件流
sh=logging.StreamHandler() # 屏幕流fh.setFormatter(formatter) # 这是通过对象实现的设置格式
sh.setFormatter(formatter) #logger.addHandler(fh)
logger.addHandler(sh)logger.debug(' logger debug message')
logger.info('logger info message')
logger.warning('logger warning message')
logger.error('logger error message')
logger.critical('logger critical message')
函数的方法:
def logger():logger = logging.getLogger() # 吸星大法fh = logging.FileHandler('logger.txt') # 文件流sh = logging.StreamHandler() # 屏幕流logger.addHandler(fh) # 追加写 设置成文件写入logger.addHandler(sh) # 默认是屏幕流 关闭后就屏幕不输出logger.setLevel(logging.DEBUG) # 设置等级 操作的对象是loggerfm = logging.Formatter('%(asctime)s [%(lineno)s] %(message)s')fh.setFormatter(fm) # 文件的对象# sh.setFormatter(fm) # 屏幕的对象 添加格式return loggerlogger1=logger() # 现在是把函数的运行结果给一个对象# 对象能够使用方法
logger1.debug('debug message')
logger1.info('info message')
logger1.warning('warning message')
logger1.error('error message')
logger1.critical('critical message')
2 序列化模块
2.1 JSON
json是不同语言之间的数据准换
序列化 反序列化
import json
'''
序列化
'''
d={'a':123,"b":456} # 数据格式是字典
s=json.dumps(d) # 转换成json字符串(实际是Unicode)
print(s) # 这是json中的数据 {"a": 123, "b": 456} 是双引号
print(type(s))# f=open('b.txt','w')
# f.write(s)
# f.close()'''
反序列化
'''
f=open('b.txt')
data=f.read()
print(data)data2=json.loads(data) # 现在就是字典的格式
print(data2)
json.dump(d,f) # d 是字典 f是文件句柄 有写入的操作
json 应用
import json
i=10
s='hello'
t=(1,4,6)
l=[3,5,7]
d={'name':"aa"}json_str1=json.dumps(i)
json_str2=json.dumps(s)
json_str3=json.dumps(t)
json_str4=json.dumps(l)
json_str5=json.dumps(d)print(json_str1) #'10'
print(json_str2) #'"hello"'
print(json_str3) #'[1, 4, 6]' # 元组转换成json格式
print(json_str4) #'[3, 5, 7]'
print(json_str5) #'{"name": "aa"}'
2.2 pickle模块
在python中能够序列化任何数据类型,是Python专用 的
序列化
import pickle # pickle 是Python文件中间转换的
import datetime# print(datetime.datetime.now())
t=datetime.datetime.now()
d={'data':t}s=pickle.dump(d,open('new','wb')) # json 不支持时间的格式print(s)
反序列化
f=open('new','rb')
data=pickle.loads(f.read())
print(data)
3 正则模块re
正则是对字符串的模糊匹配
re.findall(‘元字符’,”字符串”)
是字符串中的每一个去对应元字符中的规则
元字符
1.通配符"." # 不能配换行符\n,如果有换行符,返回一个空列表
2.模糊匹配"*" [0,+∞]
3. + [1,+∞]
4. ? [0,1]
5. {} {0,}==* {1,}==+ {0,1}==?
6.字符集 [ab] a b 是或者的关系\* + 是普通字符\- ^ \ 有特殊用处 [0-9]+[a-z]+[^2] 取反[^\d ] 单个[^\d]+ 多个连续的
7.分组() "(ab)+","add" # 分组中默认只有一个
取消优先级(?:)
8. | :或
9. \ \d \w\. \d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
\S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
\b 匹配一个特殊字符边界,比如空格 ,&,#等r'\b','' \b在ASCII中有专门的意思
命名分组
res=re.search(r"(?P<A>\w+)\\article\\(?P<id>\d+)", r"abc\article\123", flags=0)
print(res)
print(res.group("A"))
print(res.group("id"))
结果:
abc
123
无命名分组
res=re.findall("(ad)+abc", "adabcnnf", flags=0)
res=re.findall("(?:ad)+abc", "adabcnnf", flags=0) # 取消优先级
结果:
[‘ad’]
[‘adabc’]
finditer 方法
res=re.finditer("\d+", "ad324daa", flags=0)
print(res)
结果:是一个生成器
callable_iterator object at 0x0000000002B29240>
用next方法
print(next(res).group())
print(next(res).group())
search 方法
search 值匹配第一个结果
res= re.search("\d+", "sjasdff454asef2352", flags=0)
print(res)
print(res.group())
match 方法
mach只在字符串开始的位置匹配
res = re.match("\d+", "123nljklkl2565+6", flags=0)
print(res)
print(res.group())
split 方法
maxsplit是最大的分割次数,默认是0
res=re.split("\d+", "asd123fk234as123df1231sdf132fff", maxsplit=4, flags=0)
print(res)
[‘asd’, ‘fk’, ‘as’, ‘df’, ‘sdf132fff’] 第5次没有继续分割
sub 方法
res = re.sub("\d+", "A","abc2342abc123aaa123", count=3,flags=0)
print(res)
结果:
abcAabcAaaaA
compile 方法
res = re.compile("\d+", flags=0)
res2 = res.findall("hello1232") # 把编译好的直接用
print(res2)
转载于:https://www.cnblogs.com/Python666/p/6785490.html
Python 模块(二)相关推荐
- Python模块(二)(序列化)
1. namedtuple 命名元组->类似创建了一个类 from collections import namedtuple p = namedtuple("Point", ...
- [ 转]Python模块(二)import和from...import的区别
Python模块(二)import和from...import的区别 听语音 原创 | 浏览:2975 | 更新:2018-04-02 13:02 | 标签:PYTHON 1 2 3 4 5 6 7 ...
- boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数
boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数 实现功能 C++实现代码 实现功能 boost::python模块包装几个 ...
- 详解 Python qrcode 二维码模块
原文链接 摘要: 详解 Python qrcode 二维码模块. 项目地址 https://github.com/lincolnloop/python-qrcode 声明 importqrcode 使 ...
- python实现二维码识别软件_OpenCV和Zbar两个Python模块实现二维码和条形码识别
在我们的日常生活中,处处可见条形码和二维码. 在以前,我们去逛书店时,或者你现在随手拿起你身边的一本书,你肯定能看到书本的封页后面印有一排黑色线条组成的标签,也就是条形码:你去你们学校的自助机上借书还 ...
- Python模块之二:Python3 常用模块总结
Python模块之二:Python3 常用模块总结 一.random模块 提供一些随机数获取的相关方法 1.常用方法 1.random():获取[0.0,1.0)范围内的浮点数 2.randint(a ...
- python模块打包上传pypi-演示pytest hook函数二次开发
python模块打包上传pypi pytest hook函数二次开发 修改默认编码 显示中文用例名称 官方文档 : https://packaging.python.org/en/latest/tut ...
- 扩展Python模块系列(二)----一个简单的例子
本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...
- 看例子,学 Python(二)
看例子,学 Python(二) 看例子,学 Python(一) 看例子,学 Python(三) 模块 文件 mymath.py 定义了函数 fib 和 fac,mymath.py 就是一个模块. A ...
- python第三方库排行-Python模块汇总(常用第三方库)
模块 定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里.在python里,一个.py文件就是一个模块 优点: 提高代码的可维护性 ...
最新文章
- Sg.js框架核心概念
- CAS 单点登出失效的问题(源码跟踪)
- 从底层理解Python的执行
- plt保存图片_人工智能Keras CNN卷积神经网络的图片识别模型训练
- 几种软负载均衡策略分析
- Struts2 随笔1
- C/C++ 语言中表达式的求值
- springboot2使用JUnit5单元测试使用大全
- 图形的装饰教案计算机,《电脑图案设计师》教案教学设计
- es6语法在ios低版本的支持性
- 算法学习:最短路径(Floyd、Bellman-ford、Dijkstra)
- teechart for java_TeeChart java控件
- 水声信号混响matlab,水声信号
- 计算机走进画图世界课件,windowsxp走进画图世界教案
- 基于esp32 的时间系统
- 16张图详解计算机网络协议(万字)
- java半角英数check_java - 关于全角半角介绍以及处理方式
- DeepLearing—CV系列(二十二)——DCGAN生成动漫卡通人脸的Pytorch实现
- python妹子图爬虫5千张高清大图突破防盗链福利5千张福利高清大图
- mdx格式mysql_Saiku_学习_02_Schema Workbench 开发mdx和模式文件
热门文章
- 删除win7多余的系统还原点_【Win7封装教程2019版】系列(二)必要的系统调整
- OpenCV_09 模版匹配和霍夫变换:霍夫线检测+霍夫圆检测
- 智慧交通day03-车道线检测实现06:车道线定位及拟合+代码实现
- c语言文件压缩与解压缩实验报告,哈弗曼树的文件压缩和解压实验报告(C语言).doc...
- LeetCode 778. 水位上升的泳池中游泳(二分查找+dfs)
- LeetCode 1037. 有效的回旋镖
- android代理生命周期,了解 Activity 生命周期
- python牛顿法计算平方根_常用的平方根算法详解与实现
- 邻接矩阵的深度优先遍历
- ios 桥接文件找不到文件_电脑文件搜索神器,没有找不到的东西