我必须编写一个解析日志文本文件的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 之间的匹配项,依此类推。 它使用正面的"?<="和正面的展望"?="来查找匹配项,使用".*",您将能够在匹配之间获取所有内容。