如何基于Python中的列对文本文件进行排序?

时间:2017-08-31 02:11:50

标签: python troposphere

我有一个包含以下数据的文件(file.txt):

192.168.10.1/16, 22, 3265, tcp
172.144.32,2/34, 22, 21, udp
10.128.16.234/8, 0, 20, icmp

我需要通过 cloumn [0] cloumn [1] 专栏[2]

对此进行排序

1 个答案:

答案 0 :(得分:0)

我的解决方案是创建一个元组列表(每行一个元组),如下所示:

(data_in_column_of_interest, entire_line)

data_in_column_of_interest是任何数据类型,entire_line是字符串。

然后只需对此列表进行排序:

def sortLinesByColumn(readable, column, columnt_type):
    """Returns a list of strings (lines in readable file) in sorted order (based on column)"""
    lines = []

    for line in readable:
        # get the element in column based on which the lines are to be sorted
        column_element= columnt_type(line.split(',')[column-1])
        lines.append((column_element, line))

    lines.sort()

    return [x[1] for x in lines]


with open('G:/Ftest/data.txt') as f:
    # sort the lines based on column 1, and column 1 is type int
    sorted_lines = sortLinesByColumn(f, 1, int)

    for l in sorted_lines:
        print(l)

输入:包含以下内容的文件:

1, Bob, 123
5, Mary, 112
0, Allen, 2421
1, lucy, 341

输出:字符串列表:

0, Allen, 2421
1, Bob, 123
1, lucy, 341
5, Mary, 112