python - 字符串的常量部分
问题描述
我有一个问题,不知道如何解决。
例如,我有一个动态扩展文件,其中包含由 '\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 上搜索“事件日志集群”,您应该会看到很多可以学习的方法。
推荐阅读
- sql - Mongodb中的过滤时间范围
- sql-server - 我需要创建一个 AFTER UPDATE, INSERT 触发器以防止修改表(MS SQL、Microsoft Azure)
- r - 分组过滤
- spring-boot - 在 Spring Boot 中创建许多 AnnotationConfigApplicationContext
- pandas - 谷歌ai平台自定义训练:使用pandas read_csv读取谷歌云存储中的csv时出现ValueError
- python-3.x - 实例化后类对象不可调用
- python - PyQt 中的分辨率 QIcon
- c++ - 如何找出共享库是否从(zlib)链接/请求?
- javascript - 获取当前日期而不是 api 请求的日期 Moment.js
- java - 如何为 IntelliJ(或 Gradle?)控制台创建多行警告?