繁体   English   中英

解析日志文件,但不能去掉括号

[英]parsing logfile, but cant strip brackets

所以我试图解析一个日志文件,我只找到了一种方法将字符串分成三个部分,日期、错误和消息。 我可以用正则表达式轻松做到这一点,但为了学习我试图找到其他方法。 最终游戏是解析日志文件,将数据分成三部分,然后根据您选择的标志,打印统计信息。 日志格式如下:

[Tue Nov 06 09:41:10 2020] [type] message
for line in f.readlines():
    details = line.split(']')[0], line.split(']')[1], line.split(']')[2]
    details = [x.strip() for x in details]
    structure = {key:value for key, value in zip(order, details)}
    data.append(structure)

这当然给了我输出:

"date": "[date",
"type": "[log",

我还有其他几个我尝试拆分然后剥离这些字符的其他方法的示例,一种方法是:

details = line.strip('[').split(']')[0], line.split(']')[1], line.split(']')[2]

这将从日期字符串中删除 [ 括号。 这留下了类型,如果我再次执行相同的剥离但在上面的第一个位置,它不会剥离。 如果我在同一个 forloop 中拆分之前剥离,它根本不会剥离任何东西。 就像我说的,我试图以一百种不同的方式来操纵它,我认为我需要一些关于正确方法的输入,因为我被卡住了。

由一个(例如,关闭)括号拆分,然后剥离另一个(打开)一个

details = line.split(']')
details = [x.strip('[ ') for x in details]
structure = dict(zip(order, details))

但是评论中的人非常正确:正则表达式解决方案将更简单且更易于维护。 类似于以下内容:

\[(?P<date>.+?)\] \[(?P<type>[a-z]+?)\] (?P<message>.+)

在 regex101.com 上查看它的实际应用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM