<p>如果您不想使用正则表达式,您可以使用generator,它允许您在读取大量数据(和10GB大文件)时减少RAM的使用</p>
<pre class="lang-py prettyprint-override"><code>f = open("input.txt")
# you can replace f.readline() by string.splitlines() by string_to_parse.splitlines() or f.readlines()
content = (line.replace("\n", "") for line in f.readlines())
result = []
try:
# you can replace content by string.splitlines() if you read from a file
for line in content:
#We try to find a line that starts with >> fbat -v1
if line.startswith(">> fbat -v1"):
result_line = line
# Jump lines until we find the one that ends with p-value(2-sided)
while not next(content).endswith("p-value(2-sided)"):
pass
# jump one line to ignore the
next(content)
# We add the line to our result
result_line += next(content)
# finally we add our result to a list
result.append(result_line)
# this will happen if there is a >> fbat -v1 without p-value(2-sided) after
except StopIteration:
print('Could not find "p-value(2-sided)" after ">> fbat -v1" ')
# print the result
print("\n".join(result))
</code></pre>
<p>我在这里使用了一个文件来包含数据(如果是日志文件)</p>