我遇到了问题,不知道如何解决。
E.x.我有一个动态扩展文件,其中包含由 '\n' 分隔的行
每一行 - 一条消息(字符串),由仅针对该行的某些模式和值部分构建。
例如:
line 1: The temperature is 10 above zero
line 2: The temperature is 16 above zero
line 3: The temperature is 5 degree zero
所以,如您所见,不变的部分(模式)是
The temperature is zero
值部分:
For line 1 will be: 10 above
For line 2 will be: 16 above
For line 3 will be: 5 degree
当然这是一个非常简单的例子。 事实上,一个文件中有太多行和大约 50 个模式。 值部分可以是任何东西 - 可以是数字、单词、标点符号等!
我的问题是 - 如何从数据中找到所有可能的模式?
最佳答案
这听起来像是日志消息集群问题。
简单的解决方案:使用正则表达式将所有数字替换为字符串 NUMBER
。您可能需要排除日期或 IP 地址或其他内容。这可能足以为您提供日志中所有模式的列表。
或者,您也可以计算每条消息中的单词数(空格分隔的字段),并以这种方式对消息进行分组。例如,可能所有包含 7 个单词的消息都采用相同的格式。如果两条不同的消息具有相同的格式,您也可以匹配第一个单词或其他内容。
如果上述方法都不起作用,那么事情就会变得更加复杂;对任意日志消息进行聚类是一个研究问题。如果您在 Google Scholar 上搜索“事件日志聚类”,您应该会看到很多可以学习的方法。
关于python - 字符串的常量部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53672782/