【问题标题】:Stopping a loop once it evaluates to true一旦评估为真就停止循环
【发布时间】:2021-07-26 07:32:06
【问题描述】:

假设名为“File1.txt”的文本文件具有以下结构:

random information
data #29, 45392 records
Unit: Unit1  Location: AA11
2011-09-20 14:06:20.78 28 finished
more random info
2017-04-19 09:11:59.00 00:01:02.30 A24    8     7
2017-04-19 09:12:02.25 00:00:01.00 A22    3     3

我们希望从该数据中收集单位的名称(在本例中为 Unit1,如文件的第 3 行所示),以便我们可以引用其值并将其存储在数据框中.我们可以使用以下代码来实现:

un = [] #to store unit name
with open("File1.txt","r") as fi:
    for line in fi:
        if line.startswith("Unit"):
            un.append(line.split()[1])
# we could then create a dataframe and populate it with the value of un as needed

现在如果文本文件(来自同一个“单元”)有不止一行以Unit 开头:

random information
data #29, 45392 records
Unit: Unit1  Location: AA11
2011-09-20 14:06:20.78 28 finished
more random info
2017-04-19 09:11:59.00 00:01:02.30 A24    8     7
2017-04-19 09:12:02.25 00:00:01.00 A22    3     3
Unit: Unit1  Location: AA11

Unit开头的两行包含相同的信息(即我们单位的名称:Unit1),所以我们只需要收集一次名称。在这种情况下,使用上面的脚本会生成一个包含两个元素的列表(Unit1 将重复两次)。一旦计算结果为真,我们如何才能从本质上告诉循环停止?

【问题讨论】:

  • 你熟悉break命令吗?
  • 这是基本的循环控制。 Stack Overflow 并不打算取代现有的文档和教程。 un = line.split()[1] ... break 完成这项工作。
  • IMO 从概念上讲你想要一个while 循环而不是for
  • @L.Grozinger 能否解释一下如何将 for 循环替换为 while 循环?
  • 这能回答你的问题吗? how to stop a for loop

标签: python loops for-loop if-statement conditional-statements


【解决方案1】:

使用break

for line in fi:
    if line.startswith("Unit"):
        un.append(line.split()[1])
        break

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 2017-07-13
    • 2020-10-20
    • 2015-11-02
    相关资源
    最近更新 更多