繁体   English   中英

从 python 中的部分循环中断,但继续使用 rest

[英]Breaking from parts of a loop in python, but continuing with the rest

假设我们有一个名为MyFile.txt的文本文件,其结构如下:

some info
some more info
Unit: Unit1
E 32 5 5 ee
R 123 534 345 543 634 634 345
R 543 634 634 345 123 534 345

我们希望将从以R开头的行中的数据存储在名为Data的列表中(稍后将转换为数据帧),并且我们希望将“单元名称”(此处为Unit1 )添加到每行的末尾,所以最终结果将如下所示:

print(Data)

R 123 534 345 543 634 634 345 Unit1
R 543 634 634 345 123 534 345 Unit1

以下 function fn将循环遍历每一行,将以R开头的行存储在UN中,将单词Unit1存储在名为UN的新列表中,并将 Z9516DFB15F51C7EE19A4D46B8C0DBE1 存储到每一行的末尾

UN = []
Data = []
def fn(FileName):
    with open(FileName, "r") as fi:
        for line in fi:
            if line.startswith("Unit"):
                UN.append(line.split()[1])
            elif line.startswith("R"):
                Data.append(line.split()[0:] + list(UN))

如果我们的文本文件有两行以Unit开头:

some info
some more info
Unit: Unit1
E 32 5 5 ee
Unit: Unit1
R 123 534 345 543 634 634 345
R 543 634 634 345 123 534 345

上面的 function 将 append Unit1到每行的末尾两次,结果如下:

R 123 534 345 543 634 634 345 Unit1 Unit1
R 543 634 634 345 123 534 345 Unit1 Unit1

我们如何在找到一次单元名称后停止循环,但继续循环的 rest 以便它只附加一次单元名称?

您使用列表存储单位是否有特定原因? 两个单位会一样吗? 在这种情况下,而不是将单位存储在列表中,您可以简单地将其存储在变量中,如果您的循环第二次遇到它,它只会覆盖变量,因此您仍然只附加一个单位。

UN = ''
Data = []
def fn(FileName):
    with open(FileName, "r") as fi:
        for line in fi:
            if line.startswith("Unit"):
                UN = line.split()[1]
            elif line.startswith("R"):
                Data.append(line.split()[0:] + [UN])

如果你想确保只选择单元的第一个条目,你可以添加一个额外的 if 语句来检查“UN”是否为空。

暂无
暂无

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

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