解析文本文件,仅捕获两行之间具有特定字符的行



我必须编写一个解析日志文本文件的python脚本,但唯一感兴趣的数据是正在检查的"测试"的数据。文本文件采用以下常规格式:

Test 1
[lines of data]
Test 2
[lines of data]
...
[数据行

]表示来自所述测试的多行或几行数据,日志文件可以包含任意数量的测试。因此,如果我只想查看"测试 1",我希望我的脚本做的是提取"测试 1"和"测试 2"之间的所有信息,但让它在"测试 2"之前停止读取。

问题是我希望我的脚本做同样的事情,即使我想解析来自测试12的数据,并在测试13之前停止它,因为该文件中可以有任意数量的测试。我该怎么做?

我可以建议使用以下代码:

import re
with open("1new.txt","r") as file:
    eaw=file.read()
num_of_tests=2
for i in range(1,num_of_tests):
    extract=re.search(r"(?<=Test %s)(.*)(?=Test %s)"%(i,i+1),eaw,re.DOTALL).group()
    print(extract)

输出将是:

[lines of data]
[lines of data]

可以添加其他行以将提取的行附加到其他文件中:

with open("extracted.txt","a") as file2:
    file2.write(extract)

正则表达式将简单地查找测试 1 和测试 2 之间的匹配项,依此类推。 它使用正面的"?<="和正面的展望"?="来查找匹配项,使用".*",您将能够在匹配之间获取所有内容。

相关内容

  • 没有找到相关文章

最新更新