2017-09-05 76 views
-1

我需要按最後一列(升序)對文件進行排序,並且grep前100行。該代碼是:Python中需要修改腳本

import sys 
from operator import itemgetter 
file_name = sys.argv[1] 
with open(file_name) as file: 
    file_contents = file.read() 
lines = file_contents.split("\n")[1:-1] 
data = [(i, float(line.split()[-1])) for i, line in enumerate(lines)] 
sorted_data = sorted(data, key=itemgetter(1)) 
print lines[sorted_data[0]] 

文件格式:

1      ddddd  346700 T  ADD  798 0.002934  0.2829  0.7 
1       dddd  943567 A  ADD  798 -0.02574  -1.496  0.1 

此代碼返回錯誤:

error 
list indices must be integers, not tuple 
+0

第一個和最後一個文件中的行會被忽略,希望這是確定 – VPfB

回答

1

你SORTED_DATA是元組的第一個數是該行數的列表線條可變。您的代碼錯誤,因爲您打印時試圖將元組而不是整數傳遞給行變量。要獲得相關線路的線變量,你可以使用列表理解:

results = [lines[idx] for idx, v in sorted_data] 
print(results[:100]) 
+0

這是給我的列表作爲輸出 – star

+0

它的排序列表你想要的行。最終的格式取決於你。 – Meow

+0

好的我如何才能打印排序的前100行並將它們存儲在單獨的文件中。我想要做的是打開文件並按最後一列對它進行排序,然後在單獨的文件中grep排名前100的行 – star