返回顶部

day23__模块(三)

re

 

"""

|       或

findall  找出所有   把结果放在一个列表里

search   返回一个满足的,  返回一个对象, 拿值调用group方法

match    只会从开始匹配, 在search基础上加^号

split    分隔

sub      替换 4个参数  re.sub("a","A","abababab",2)   小写a替换成大写A   替换2次

compile   规则



finditer  数据封装到迭代器

"""

 

  

 

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

"""
日志模块

defbug      级别最低
info        
warning
error
critical

"""

  

# 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用户输出的消息 

 

 

# 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")

  

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

导航