2017-09-05 17 views
-1

ファイルを最後の列(昇順)でソートし、上位100行をgrepする必要があります。コードは次のとおりです。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は、最初の数字は行番号であることとのタプルのリストですlines変数。コードのエラーは、印刷時に整数の代わりにタプルをlines変数に渡そうとしているためです。ライン内の関連する行は変数を取得するには、リストの内包表記を使用することができます:最初と最後のファイルの行

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

大丈夫だ願っていますあなたが望む行。最終的なフォーマットはあなた次第です。 – star

+0

それはのソートされたリストだとこれは私のリストを与えている – Meow

+0

okどうやってソートされた上位100行だけを印刷し、別々のファイルに格納することができますか?私は何をしたいのですか?ファイルを開いて最後の列でソートし、別のファイル – star

関連する問題