python Script

时间:2017-09-05 04:07:37

标签: python python-3.x

我需要按最后一列(升序)对文件进行排序,然后grep前100行。代码是:

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

1 个答案:

答案 0 :(得分:1)

您的sorted_data是一个元组列表,第一个数字是lines变量中的行号。您的代码错误,因为您在打印时尝试将元组而不是整数传递到行变量中。要获取lines变量中的相关行,您可以使用列表推导:

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