day23__模块(三)
re
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | """ | 或 findall 找出所有 把结果放在一个列表里 search 返回一个满足的, 返回一个对象, 拿值调用group方法 match 只会从开始匹配, 在search基础上加^号 split 分隔 sub 替换 4个参数 re.sub("a","A","abababab",2) 小写a替换成大写A 替换2次 compile 规则 finditer 数据封装到迭代器 """ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | print (re.findall( "sa|e" , "sadjke" )) #['sa', 'e'] # 分组 print (re.search( "\d+" , "ssd34kk55" ).group()) #34 search返回一个对象, 只找一个满足的 print (re.search( "(?P<name>[a-z]+[0-9]+)" , "abca2663bcabc6666" ).group( "name" )) #abca2663 print (re.search( "(?P<name>[a-z]+)(?P<age>[0-9]+)" , "abca2663bcabc6666" ).group( "name" )) #abca print (re.search( "(?P<name>[a-z]+)(?P<age>[0-9]+)" , "abca2663bcabc6666" ).group( "age" )) #2663 print (re.match( "\d+" , "23342kdj2kjkj2" ).group()) #23342 print (re.split( "[ |]" , "hello abc|def" )) #['hello', 'abc', 'def'] 按空格 或| 分隔 print (re.split( "[ab]" , "abcdef" )) #按a分 再按b分 ['', '', 'cdef'] print (re.split( "[ad]" , "abcdef" )) #['', 'bc', 'ef'] print (re.sub( "a" , "c" , "aarud" )) #替换 4个字符 a 替换成 c 替换次数 print (re.sub( "\d+" , "A" , "6785aa999rud" )) #AaaArud print (re.sub( "a" , "A" , "abababab" , 2 )) #AbAbabab 小写a替换成大写A 替换2次 com = re. compile ( "\d+" ) print (com.findall( "ddlkk3538d39889klkds" )) #['3538', '39889'] com = re.finditer( "\d+" , "sdkjkj376cjd30jkf" ) print ( next (com).group()) #376 print ( next (com).group()) #30 print (re.findall( "www\.(baidu|163)\.com" , "www.baidu.com" )) #['baidu'] print (re.findall( "www\.(?:baidu|163)\.com" , "www.baidu.com" )) #['www.baidu.com'] |
logging
1 2 3 4 5 6 7 8 9 10 | """ 日志模块 defbug 级别最低 info warning error critical """ |
1 2 3 4 5 6 7 8 9 10 11 12 13 | # basicConfig logging.basicConfig(level = logging.DEBUG, #调整级别 #filename="logger.log", #日志文件 日志是追加模式 默认a模式 #filemode="w", #日志模式 format = "%(asctime)s %(filename)s [%(lineno)d] %(message)s" , # 字符串形式的当前时间 文件名 调用日志输出函数的语句所在的代码行 用户输出的消息 ) logging.debug( '5a5debug message' ) logging.info( '44info message' ) logging.warning( '33warning message' ) logging.error( '22error message' ) logging.critical( '11critical message' ) |
format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s用户输出的消息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # logger logger = logging.getLogger() fh = logging.FileHandler( "test_log" ) #往文件发送内容 ch = logging.StreamHandler() #往屏幕发送内容 fm = logging.Formatter( "%(asctime)s %(message)s" ) #格式 fh.setFormatter(fm) ch.setFormatter(fm) logger.addHandler(fh) logger.addHandler(ch) logger.setLevel( "DEBUG" ) #设定级别 logger.debug( "wdebugwwww" ) logger.info( "infosss" ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | def logger(): logger = logging.getLogger() fh = logging.FileHandler( "test_log" ) ch = logging.StreamHandler() fm = logging.Formatter( "%(asctime)s %(message)s" ) fh.setFormatter(fm) ch.setFormatter(fm) logger.addHandler(fh) logger.addHandler(ch) logger.setLevel( "DEBUG" ) return logger logger = logger() logger.debug( "sssklwdebugwwwwss" ) |
posted on 2018-05-23 16:43 augustyang 阅读(394) 评论(0) 编辑 收藏 举报
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络
2017-05-23 在tlog里统计注册统计相关功能