一种基于Python的自定义日志解析的实践方法

本文介绍了如何通过BeautifulSoup库解析HTML日志文件,提取包含条件日志和变量赋值的日志字段,使用正则表达式处理特殊符号,以便于后续数据分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求说明:

从如下的日志文件里解析出如下字段:

参数名:教育程度

左值:60

右值:90

表达式:等于

结果:不满足

解决方法:

Step1: 因为原始日志来源于网页,这里真正的日志实际是html文件,需要通过BeautifulSoup对文件进行解析。

Step2:解析时遍历每行数据,对含有“[条件日志]”的处理见下:

按照“【”、“】”、“左值”、“右值”提取关键信息,其中对特殊符号可采取正则表达式统一替换。

Step3:对含有“变量赋值日志”'的仅提前出 左值、右值。

import re
r = "[,。,【】]"
#sentence = re.sub(r, ' ', sentence)

def cleanData(str):
    #str="[条件日志]:^^^条件:[变量]参数.非广西手机号码归属地_调用状态【小于等于】[字符]300 =>满足, 左值:【200】, 右值:【300】。"
    if ('[条件日志]' in str):
        #print("表达式:\t",str.split('左值:')[0])
        expStr=str.split('左值:')[0].replace('[条件日志]:^^^条件:[变量]参数.','')
        para=expStr.split('【')[0]
        exp= expStr.split('【')[-1].split('】')[0]
        leftVal=str.split('左值:')[-1].split('右值:')[0]
        leftVal =re.sub(r, '', leftVal)
        rightVal = str.split('右值:')[-1].split('右值:')[0]
        rightVal = re.sub(r,'',rightVal)
        result = expStr.split("=>")[-1].replace(',','')
        print(para,leftVal,exp,rightVal,result)
    elif('变量赋值日志' in str):
        expStr = str.replace('[变量赋值日志]:###变量赋值:参数.', '')
        leftVal = expStr.split('=')[0]
        rightVal = expStr.split('=')[-1]
        print("\t",leftVal, rightVal)
    elif('进入决策节点' in str):
        print(str.replace('[RuleFlow]:>>>进入决策节点, ',''))


from bs4 import BeautifulSoup

#1将字符串中,字母i单独出现的地方将i变为I
s='i am is wang i love I love you i!'
patter=re.compile(r'^.*日志:') #[RuleFlow.*$]

with open("D:/log.html", "r", encoding='utf-8') as f:
    html = f.read()
    soup = BeautifulSoup(html, 'html.parser')
    table = soup.find('table')
    rows = table.find_all('tr')
    for row in rows:
        cells = row.find_all('td')
        for cell in cells:
            cleanData(re.sub(patter, '', cell.text))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShenLiang2025

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值