以下是txt文件中的数据示例:
1322484979.322313000 85.24.168.19 QQlb-j7itDQ
1322484981.070116000 83.233.56.133 Ne8Bb1d5oyc
1322484981.128791000 83.233.56.133 Ne8Bb1d5oyc
1322484981.431075000 83.233.56.133 Ne8Bb1d5oyc
1322484985.210652000 83.233.57.136 QWUiCAE4E7U
第一列是时间戳,第二列是IP地址,第三列是一些哈希值。
我想检查一下,如果两个或多个连续的行具有相同的IP地址和哈希值,我需要使用重复行的最后一个时间戳来减去重复行的第一个时间戳,在这种情况下,是132248981.431075000- 1322484981.070116000
如果结果小于5,我只保留文件中的第一行(最早)。
如果结果超过5,我会保留第一行和最后一行,删除它们之间的行
因为我是python的新手,这个问题对我来说有点复杂。我不知道需要什么样的功能,任何人都可以帮一下吗?
答案 0 :(得分:3)
从基本的角度来看,它看起来像这样:
data = open("data.txt", "r")
last_time = 0.0
last_ip = None
last_hash = None
for line in data:
timestamp, ip, hash_value = line.split()
if ip==last_ip and hash_value==last_hash and float(timestamp) - float(last_time) < 5.0:
print "Remove ", line
else:
print "Keep ", line
last_time, last_ip, last_hash = timestamp, ip, hash_value