我有一个包含大量消息的文件。每一行都是一条独特的消息,其结构彼此相似,稍作修改。一个例子如下:
Error number 609 at line 10
Error number 609 at line 22
Error string "foo" at line 11
Error string "bar" at line 14
并希望输出类似于:
Error number 609 at line 10
Error string "foo" at line 11
它们是“相同”类型的错误。
我设法删除了类似的行,但我遇到的问题是我必须循环遍历文件中的每一行多少次,直到它不再有“重复”。
我目前拥有的:
from difflib import SequenceMatcher
def similar(a, b):
return SequenceMatcher(None, a, b).ratio()
lst = open("result.txt").readlines()
print(len(lst))
for i in lst:
for index, line in enumerate(lst):
try:
if similar(lst[index],lst[index + 1]) > 0.8:
lst.pop(index)
except:
pass
print(len(lst))
但这不是一个确定的方法,因为它可能是循环次数过多,或者如果文件非常大且包含许多“相同”行,则可能还不够。
编辑:
文件中多种消息类型之一的更准确示例是以下内容:
[{TYPE}] Timeout after {miliseconds} millis, source ref: {random-number}, system: {system}, delivered {system}: , current {system}: {time}
喵喔喔
慕仙森
相关分类