【发布时间】: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