繁体   English   中英

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

[英]Python: Running a for loop with multiple inputs and sorting the results into different lists

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

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)

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

因此,这部分代码将打开一组文件,并扫描每个文件以查看其是否为“ Part:ABCD”,如果是,它将拉出“ Measure X:”和“ Measure Y:”行并添加他们到measure_list。 我的问题是我有很多文件,并且会有多个“ Part: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)

任何帮助表示赞赏。

为什么不只使用两个列表?

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

然后简单地

final = ''.join(listx + listy)

创建两个输出数组,并使用带有if语句的for循环将输入分类。 然后将两个输出合并。

我前面没有python,因此可能需要进行轻微的语法编辑。 这应该按“ Measure X:...”的X和Y部分对列表进行排序。

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

您的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']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM