gpt4 book ai didi

python - 使用 python 读取文本文件中两个字符串之间的行

转载 作者:行者123 更新时间:2023-12-01 01:00:41 24 4
gpt4 key购买 nike

我有一个包含消息的文本文件,该文件以“START”行开头并以“END”行结束。我希望 python 代码读取这两个单词之间的行。我有一个代码正在读取这两个单词之间的行。但它也在读取“开始”和“结束”行。我只想要这两个单词之间的线条。

我已经尝试过这段代码,它也读取“START”和“END”单词。

data=[]
flag=False
with open('/tmp/test.txt','r') as f:
for line in f:
if line.startswith('START'):
flag=True
if flag:
data.append(line)
if line.strip().endswith('END'):
flag=False

print ''.join(data)

请建议在两个单词之间读取的代码(不包括“START”和“END”行)

最佳答案

只需重新排列您的 if 语句即可。考虑它们的流动顺序以及何时评估 if flag。此外,您可以使用 elif 以便仅执行三个条件之一,但请确保 elif flag 行是最后一个条件。

按照您的示例设置方式,它将检查该行是否以 START 开头,然后设置标志。发生这种情况后,您将立即检查该标志是否已设置,因此它将打印出START。此外,它会打印每一行,然后在打印该行之后检查它是否应该打印END

重新排列顺序后,您将看到,如果该行以 START 开头,则下面没有命令可以打印该行。同样,它会在打印 END 行之前检查是否应该停止。

with open('/tmp/test.txt','r') as f:
for line in f:
if line.strip().endswith('END'):
flag=False
if flag:
data.append(line)
if line.startswith('START'):
flag=True

elif 版本可能是更好的方法,因为它可以节省您对 if 语句的一些检查,但每次迭代只能执行一个结果。因此,如果更改了标志,则它永远不会打印出该行。

with open('/tmp/test.txt','r') as f:
for line in f:
if line.startswith('START'):
flag=True
elif line.strip().endswith('END'):
flag=False
elif flag:
data.append(line)

关于python - 使用 python 读取文本文件中两个字符串之间的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55814091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com