Python:运行带有多个输入的for循环,并将结果排序到不同的列表中

时间:2016-08-26 18:50:55

标签: python python-3.x

所以我有一些看起来像这样的代码:

measure_list=[]
for file in file_list:
    with open(file,"r") as read_data:
        y=read_data.read()
        if "Part: ABCD" in y:
            for line in m:
                if "Measure X:" in line:
                    measure_list.append(line)
                elif "Measure Y:" in line:
                    measure_list.append(line)

final=''.join(measure_list).replace("Measure","\nMeasure")
print(final)

(这最后一部分只是帮助组织输出)

因此,代码的这一部分打开一组文件并扫描每一个文件以查看它是否是"部分:ABCD",如果是,它将拉出"测量的行X:"和"测量Y:"并将它们添加到measure_list。我的问题是我有很多文件,会有多个"部分:ABCD"文件。在使用.join()加入列表后,输出将如下所示:

Part: ABCD
Measure X: (Numbers)
Measure Y: (Numbers)
Measure X: (Numbers)
Measure Y: (Numbers)
Measure X: (Numbers)
Measure Y: (Numbers)

我的问题是,如果有人知道组织输出的方法,那么它看起来像这样:

Part: ABCD
Measure X: (Numbers)
Measure X: (Numbers)
Measure X: (Numbers)
Measure Y: (Numbers)
Measure Y: (Numbers)
Measure Y: (Numbers)

感谢任何帮助。

4 个答案:

答案 0 :(得分:3)

为什么不使用两个列表?

if "Measure X:" in line:
    listx.append(line)
elif "Measure Y:" in line:
    listy.append(line)

然后简单地

final = ''.join(listx + listy)

答案 1 :(得分:1)

创建两个输出数组,并使用带有if语句的for循环对每个输出进行排序。然后加入两个输出。

答案 2 :(得分:1)

我没有在我面前放置python,因此可能需要进行轻微的语法编辑。这应该按照"测量X的X和Y部分对列表进行排序:..."

sorted(measure_list,key=lambda item: item.split()[1][0])

答案 3 :(得分:1)

您的measure_list似乎是这样的:

['Measure X: 1000', 'Measure Y: 2000', 'Measure X: 100' , 'Measure Y: 900']

如果这是正确的,您可以简单地对此measure_list进行排序:

measure_list.sort()

然后你会:

['Measure X: 100', 'Measure X: 1000', 'Measure Y: 2000', 'Measure Y: 900']