我有一个包含消息的文本文件,该文件以“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/