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