首页 > 解决方案 > 如何链接和排序多个变量?

问题描述

我正在阅读一个文本文件,该文件具有文件名和数字形式的平均统计信息,例如:

文件名

0.6597

这会一遍又一遍地重复,因为这是从程序生成的报告。我想知道如何做到这一点,这样我就可以将文件名和统计信息结合起来,这样它们就永远不会相互分离。然后能够同时按文件名和统计数据对它们进行排序。文件名中将包含子字符串,这些子字符串可以与具有相同子字符串的其他文件名匹配。该子字符串表示它们在地球上的物理位置,必须相应地进行分组。一旦根据文件名中子字符串的匹配方式对它们进行排序,我就可以按照其中哪个具有最高平均值(数字)对它们进行排序。这是我到目前为止所拥有的。

def openfile():
list = []

with open('TestReportWrite.txt', 'r') as f:
    for line in f:
        if 'Processed' in line:
            list.append(line)
        elif '.' in line:
            list.append(line)
        else:
            pass
return list

我可以成功建立一个列表,但文件名和统计信息没有相互链接,也不会一起排序。我不太确定如何链接它们。

文件名的一个示例是 LC08_L1TP_027042_20190917_20190925_01_T1 我想要排序的部分是027042,其余的无关紧要。

我正在阅读的文件的确切格式是文件路径紧跟在新行上的统计信息(以数字的形式)。这是一个虚构的例子 在此处输入图像描述

标签: python

解决方案


看起来文件名/统计信息每隔一行交替出现。您可以读取文件名,在下划线处拆分以提取可能感兴趣的信息,然后将下一行添加为 stats 值。现在您可以对任何您想要的列进行排序。

def openfile():
    my_list = []
    with open('TestReportWrite.txt', 'r') as f:
        for line in f:
            # assuming the underscores split the interesting parts
            # consistently
            columns = line.strip().split('_')
            # add the stats
            columns.append(next(f).strip())
            my_list.append(parts)
    # sorted by the part you want in column 2
    my_list.sort(key=lambda col:col[2])
    return my_list

推荐阅读