提取日志文件的指定内容

 

如下日志,提取出Notice:开头的行中的ctime的值,然后求平均数

a.log日志文件

Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
112222221111111122233331111111111111
Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
hhhhhhhhhhhhhhhhhhhhhhhhh
Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r


Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r


Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r

Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r

Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r

Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r
Notice:hjhj hjj  hj  hj j h j hh ctime:35s fr  fr f rf r fr f r

 

解决方法

#coding=utf-8
import re

def gettime(l):
    num=""
    index=int(l.find("ctime"))+6
    while(True):
        if(l[index]=="s"):
            break
        else:
            num+=l[index]
        index+=1
    return int(num)

t=0
count=0
with open("a.log","r") as f:
    while(True):
        l=f.readline()
        if(not l):
            break
        if(re.match("Notice:",l)):
            t+=gettime(l)
            count+=1
    average=t/count
    print(average)

输出

35.0

 

 

 

 

转载于:https://www.cnblogs.com/sea-stream/p/11273039.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值