2011-09-26 16 views
1

我有一個相當簡單的任務,我需要自動進行分析。我在這個論壇上發現了類似的問題,但不適用於純文本文件,因爲我是一個Python新手,我不知道如何直接將這些解決方案轉換爲我的需要。所以我會很感激任何幫助。將文本文件中的行以指定列中的最大值輸出到新文件

我有一系列的文件格式爲:

11 5012 1000 10036040.000000 1.089555 4.529811 0.150000 
11 5013 1000 10038040.000000 1.089783 4.340549 0.150000 
11 5014 1000 10039040.000000 1.090000 4.733367 0.150000 
11 5015 1000 10044040.000000 1.090217 4.601943 0.150000 
11 5016 1000 10044040.000000 1.090435 5.048237 0.150000 
11 5017 1000 10046040.000000 1.090652 1.280908 0.050000 

每個文件被命名爲「data1-1」,「data1-2」,「data1-3」等 的數據是由單一分離空格,並沒有標題

我想要一個腳本進入每個文件,找到第5列中的最大值的行(例如值5.048237以上),並將該行打印到新的輸出文件。 最後,我需要一個輸出文件,其中包含每個輸入文件第5列中具有最大值的行。所以如果有5個輸入文件,輸出文件將有5行。

我希望這是明確的,任何幫助真的很感激!

回答

1
import glob, operator 

fpout = open("result.dat","w") 

for path in glob.glob("data?-?"): 
    with open(path, "r") as fp: 
     fields = [ line.split(" ") for line in fp ] 
     maxline = " ".join(max(fields, key = lambda row: float(row[5])) 
     print >> fpout, maxline 
+1

你忘了說你正在排序的迭代。另外,'max'函數直接使用'key',不需要排序 - 給出O(n-1)的性能。 – agf

+0

@agf:謝謝!學到了新東西。 – rocksportrocker

+0

對不起新手在這裏,你指什麼我迭代排序? – user964689

相關問題