Разбор текстового файла и захват только строк между двумя строками с определенными символами - PullRequest
0 голосов
/ 18 января 2019

Мне нужно написать скрипт на python, который анализирует текстовый файл журнала, но единственные данные, представляющие интерес, это данные проверяемого «теста». Текстовый файл в следующем общем формате:

Test 1
[lines of data]

Test 2
[lines of data]

...

[Строки данных] представляют собой либо много, либо несколько строк данных из указанного теста, а в файле журнала может быть любое количество тестов. Поэтому, если я хочу посмотреть только на «Тест 1», мой скрипт должен извлечь всю информацию между «Тестом 1» и «Тестом 2», но прекратить чтение перед «Тестом 2».

Загвоздка в том, что я хочу, чтобы мой сценарий делал то же самое, даже если я хочу проанализировать данные, скажем, из теста 12, и остановить его до теста 13, потому что может быть любое количество тестов файл. Как бы я пошел по этому поводу?

1 Ответ

0 голосов
/ 18 января 2019

Могу ли я предложить использовать следующий код:

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)

OUTput будет:

[lines of data]
[lines of data]

Может добавить дополнительные строки, чтобы добавить извлеченные строки в другой файл:

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

    file2.write(extract)

Регулярное выражение будет просто искать совпадения между Тестом 1 и Тестом 2 и так далее. для поиска совпадений используются положительный lookbehind "? <=" и положительный lookahead "? =", а с помощью ". *" вы сможете получить все между матчами. </p>

...