2011-12-01 18 views
2

以下是在一個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,我會保持第一和最後一行復制,刪除它們

之間行,因爲林蟒的一個漂亮的新手,這個問題對我來說有點複雜。我不知道需要什麼樣的功能,任何人都可以幫助一點點?

+5

你可以嘗試寫在僞代碼的算法。然後,您可以提出有關如何實現算法特定步驟的問題。 –

回答

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 
+0

還有一個問題,實際上效果不好。是不是應該有一些'test = data.read()'?我的問題是,'line'無法保存整行數據,在這種情況下,只有第一個數字是1. @CédricJulien – manxing