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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

影响和改变世界的50件发明专利,猜下中国有几个?

来源&#xff1a;国家知识产权局创新创造未来&#xff0c;专利改变世界。最近几十年究竟有哪些专利真正改变了世界呢&#xff1f;国家识产权局选取了一批具有历史意义的、促进社会经济发展的、对人类社会产生重要影响的中外专利。未来智能实验室的主要工作包括&#xff1a;建立…

js 自动分配金额_JS内存图以及原型与原型链

内存以及内存图在JS中&#xff0c;每一个数据都需要一个内存空间。内存空间又被分为两种&#xff0c;栈内存(stock)与堆内存(heap)。JS内存空间分为栈(stack)、堆(heap)、池(一般也会归类为栈中)。 其中栈存放变量&#xff0c;堆存放复杂对象&#xff0c;池存放常量。JS中的基础…

全球首个AI宇宙模拟器不仅有6亿光年宽度,还“自行”跑出了暗物质

来源&#xff1a;大数据文摘《创世纪》里&#xff0c;神用7天创造了这个世界。而现在&#xff0c;你可能也有机会体验这个过程&#xff0c;创造一个属于自己的宇宙。Space Engine 0.990版本在Steam平台发售不到一天&#xff0c;近300测评全部为最高评价。之后&#xff0c;还得到…

一个HelloWorld网站

一个HelloWorld网站 点击直达 介绍 很多技术在里面都有很多的HelloWorld 当初是我在windows下使用redis在官方文档没有找到入门的资料发现的 个人理解 作为HelloWorld是不错的,当然还有一些东西值得看,参考用过直接上某个技术的官方文档。 转载于:https://www.cnblogs.com/bean…

js 延迟几秒执行_深入研究 Node.js 的回调队列

// 每日前端夜话 第365篇// 正文共&#xff1a;3000 字// 预计阅读时间&#xff1a;10 分钟队列是 Node.js 中用于有效处理异步操作的一项重要技术。在本文中&#xff0c;我们将深入研究 Node.js 中的队列&#xff1a;它们是什么&#xff0c;它们如何工作(通过事件循环)以及它们…

java官方 jax rs_jboss7 Java API for RESTful Web Services (JAX-RS) 官方文档

原文&#xff1a;https://docs.jboss.org/author/display/AS7/JavaAPIforRESTfulWebServices(JAX-RS)ContentTutorial OverviewThis chapter describes the Java API for RESTful web services (JAX-RS, defined in JSR331). RESTEasy is an portable implementation of this s…

数据结构-王道2017-第5章 图

1.图的基本概念 1&#xff09;图的定义 图G由顶点集V和边集E组成&#xff0c;记为G(V,E),其中V(G)表示图G中定点的有限非空集&#xff1b;E(G)表示图G中顶点之间的关系&#xff08;边&#xff09;集合。V{v1,v2,..,vn},用|V|表示图G中顶点的个数&#xff0c;也称为图G的阶&…

python两个参数or循环_python学习笔记(四)、条件、循环及其他语句

1 再谈print和import1.1 打印多个参数print 能够同时打印多个表达式&#xff0c;并且能自定义分隔符。如下&#xff1a;print(a,b,c)  ——> a b cprint(a,b,c,sep"_")  ——> a_b_c1.2 import导入模块时&#xff0c;能够给导入的模块取一个别名(相对于生活…

研究揭示大脑在工作记忆中存储信息的神经机制

来源&#xff1a;中国科学院脑科学与智能技术卓越创新中心&#xff08;神经科学研究所&#xff09;3月5日&#xff0c;《神经元》期刊在线发表了题为《无颗粒岛叶皮层瞬时性神经元活动调控学习新任务时的工作记忆存储》的研究论文。该研究由中国科学院脑科学与智能技术卓越创新…

[Jmeter] 基本使用的总结

转载于:https://www.cnblogs.com/mytianying/p/6793461.html

java 仿qq登录界面7.1_安卓开发学习笔记(七):仿写腾讯QQ登录注册界面

这段代码的关键主要是在我们的相对布局以及线性布局上面&#xff0c;我们首先在总体布局里设置为线性布局&#xff0c;然后再在里面设置为相对布局&#xff0c;这是一个十分常见的XML布局模式。废话不多说&#xff0c;直接上代码&#xff1a;一.activity.xml>android:layout…

python numpy.array_python的numpy.array

为什么要用numpyPython中提供了list容器&#xff0c;可以当作数组使用。但列表中的元素可以是任何对象&#xff0c;因此列表中保存的是对象的指针&#xff0c;这样一来&#xff0c;为了保存一个简单的列表[1,2,3]。就需要三个指针和三个整数对象。对于数值运算来说&#xff0c;…

【前沿科技】云计算军事运用有啥特点

来源&#xff1a; 军语开源情报研究所云计算技术被视为继大型计算机、个人计算机、互联网之后的第四次信息技术产业革命。云计算是一种围绕分布式共享计算资源的创新应用模式&#xff0c;资源提供者可以方便而快速地提供计算资源&#xff0c;而无处不在的资源需求者可以便利地使…

tools URL 收集

每次恢复快照都会把CHrome的标签弄没&#xff0c;所以将收藏的好资源放在这里以免又丢了。 IP 段查询下载&#xff0c;做黑白名单用的到 http://ipblock.chacuo.net/ 转载于:https://www.cnblogs.com/M4ster/p/tools_url.html

python 通过ip获取城市_python 根据ip获取地理位置

!/usr/bin/pythoncodingutf-8import dpktimport socketimport pygeoipimport optparsegi pygeoip.GeoIP(GeoLiteCity.dat)查询数据库相关的城市信息并输出def printRecord(tgt):rec gi.record_by_name(tgt)city rec[city]# 原来的代码为 region rec[region_name]&#xff0…

js原型和原型链_JS 构造函数与原型链

JavaScript 对象体系是基于构造函数和原型链的。继承不通过类&#xff0c;而是通过原型对象实现&#xff0c;原型对象的所有属性和方法&#xff0c;都能被实例对象共享。构造函数&#xff08;constructor&#xff09;在 JS 中想要生成可重用、可继承的对象就要使用构造函数&…

全球制造业的未来

来源&#xff1a;航空简报2020年3月4日&#xff0c;Brahima Coulibaly和Karim Foda在美国布鲁金斯学会官网刊文&#xff0c;分析了全球制造业的未来&#xff0c;提出了几个鲜明的观点&#xff1a;1.“比较优势”将发生转移&#xff0c;中等收入国家尤其是许多亚洲新兴经济体&am…

关于解决织梦文档栏目删除后ID 从1开始的方法

在织梦当删除文档栏目后&#xff0c;再重新建立文档时&#xff0c;它的id就会按照刚才建立的文档的id的数值再增加一个&#xff0c; 比如&#xff0c;开始建立的文档id是1&#xff0c;当删除后&#xff0c;要重新再建立一个文档时&#xff0c;文档的后面的id已经不是从1开始&am…

mybatis 批量修改_解放双手,不写SQL!一个开源 MyBatis 神器!!

什么是通用 Mapper&#xff1f;它是一个可以方便的使用 Mybatis 进行单表的增删改查优秀开源产品。它使用拦截器来实现具体的执行 Sql&#xff0c;完全使用原生的 Mybatis 进行操作。在 Github 上标星 9.6K&#xff01;为什么要用 Mapper&#xff1f;它提供了所有单表的基本增删…

论文速读:AI能从人类的愚蠢中学到什么?

来源&#xff1a;混沌巡洋舰本文来自对下面论文的编译和解读&#xff1a;导读&#xff1a;随着机器在某些认知问题上超越人类&#xff0c;人机协作将会带来越来越显著的影响。造成人类偏见的三个主要原因&#xff08;小而不完整的数据集&#xff0c;从自己的决策结果中学习&…