返回顶部

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   augustyang  阅读(394)  评论(0编辑  收藏  举报

编辑推荐:
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
阅读排行:
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络
历史上的今天:
2017-05-23 在tlog里统计注册统计相关功能

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示