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 模块(二)相关推荐

  1. Python模块(二)(序列化)

    1. namedtuple 命名元组->类似创建了一个类 from collections import namedtuple p = namedtuple("Point", ...

  2. [ 转]Python模块(二)import和from...import的区别

    Python模块(二)import和from...import的区别 听语音 原创 | 浏览:2975 | 更新:2018-04-02 13:02 | 标签:PYTHON 1 2 3 4 5 6 7 ...

  3. boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数

    boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数 实现功能 C++实现代码 实现功能 boost::python模块包装几个 ...

  4. 详解 Python qrcode 二维码模块

    原文链接 摘要: 详解 Python qrcode 二维码模块. 项目地址 https://github.com/lincolnloop/python-qrcode 声明 importqrcode 使 ...

  5. python实现二维码识别软件_OpenCV和Zbar两个Python模块实现二维码和条形码识别

    在我们的日常生活中,处处可见条形码和二维码. 在以前,我们去逛书店时,或者你现在随手拿起你身边的一本书,你肯定能看到书本的封页后面印有一排黑色线条组成的标签,也就是条形码:你去你们学校的自助机上借书还 ...

  6. Python模块之二:Python3 常用模块总结

    Python模块之二:Python3 常用模块总结 一.random模块 提供一些随机数获取的相关方法 1.常用方法 1.random():获取[0.0,1.0)范围内的浮点数 2.randint(a ...

  7. python模块打包上传pypi-演示pytest hook函数二次开发

    python模块打包上传pypi pytest hook函数二次开发 修改默认编码 显示中文用例名称 官方文档 : https://packaging.python.org/en/latest/tut ...

  8. 扩展Python模块系列(二)----一个简单的例子

    本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...

  9. 看例子,学 Python(二)

    看例子,学 Python(二) 看例子,学 Python(一) 看例子,学 Python(三) 模块 文件 mymath.py 定义了函数 fib 和 fac,mymath.py 就是一个模块. A ...

  10. python第三方库排行-Python模块汇总(常用第三方库)

    模块 定义 计算机在开发过程中,代码越写越多,也就越难以维护,所以为了编写可维护的代码,我们会把函数进行分组,放在不同的文件里.在python里,一个.py文件就是一个模块 优点: 提高代码的可维护性 ...

最新文章

  1. Sg.js框架核心概念
  2. CAS 单点登出失效的问题(源码跟踪)
  3. 从底层理解Python的执行
  4. plt保存图片_人工智能Keras CNN卷积神经网络的图片识别模型训练
  5. 几种软负载均衡策略分析
  6. Struts2 随笔1
  7. C/C++ 语言中表达式的求值
  8. springboot2使用JUnit5单元测试使用大全
  9. 图形的装饰教案计算机,《电脑图案设计师》教案教学设计
  10. es6语法在ios低版本的支持性
  11. 算法学习:最短路径(Floyd、Bellman-ford、Dijkstra)
  12. teechart for java_TeeChart java控件
  13. 水声信号混响matlab,水声信号
  14. 计算机走进画图世界课件,windowsxp走进画图世界教案
  15. 基于esp32 的时间系统
  16. 16张图详解计算机网络协议(万字)
  17. java半角英数check_java - 关于全角半角介绍以及处理方式
  18. DeepLearing—CV系列(二十二)——DCGAN生成动漫卡通人脸的Pytorch实现
  19. python妹子图爬虫5千张高清大图突破防盗链福利5千张福利高清大图
  20. mdx格式mysql_Saiku_学习_02_Schema Workbench 开发mdx和模式文件

热门文章

  1. 删除win7多余的系统还原点_【Win7封装教程2019版】系列(二)必要的系统调整
  2. OpenCV_09 模版匹配和霍夫变换:霍夫线检测+霍夫圆检测
  3. 智慧交通day03-车道线检测实现06:车道线定位及拟合+代码实现
  4. c语言文件压缩与解压缩实验报告,哈弗曼树的文件压缩和解压实验报告(C语言).doc...
  5. LeetCode 778. 水位上升的泳池中游泳(二分查找+dfs)
  6. LeetCode 1037. 有效的回旋镖
  7. android代理生命周期,了解 Activity 生命周期
  8. python牛顿法计算平方根_常用的平方根算法详解与实现
  9. 邻接矩阵的深度优先遍历
  10. ios 桥接文件找不到文件_电脑文件搜索神器,没有找不到的东西