Python разбирает файл и извлекает абзацы - PullRequest
0 голосов
/ 05 июля 2018

Я использую домашний инструмент, который анализирует конфигурацию компьютера, чтобы проверить, применена ли какая-либо базовая конфигурация или нет, и генерирует предупреждение в текстовом файле на хосте, на котором я запускаю инструмент.

Инструмент не создает файл на компьютере, который не работает, но файл для всех.

Я бы хотел проанализировать этот текстовый файл и заставить каждый абзац, соответствующий каждому компьютеру, отправлять электронное письмо ИТ-специалисту, который отвечает за компьютер, чтобы сообщить ему, что он должен делать.

Например, ниже:

---- mycomputerone ---- 

 Hello

 During Test of mycomputerone following misconfiguration were detected
 - bad ip adress
 - bad name

 please could take the action to correct it and come back to us?

 ---- mycomputertwo ---- 

 Hello

 During Test of mycomputertwo following misconfiguration were detected
 - bad ip adress
 - bad name
 - administrative share available

 please could take the action to correct it and come back to us?

 ---- mycomputerthree ---- 
.....

Я бы хотел получить текст между hello и ?, но не могу понять, как это сделать

Я пытался

re.search(r'hello'(S*\w+)\?'), text)

Это не сработало. Я читаю файл через

d = open(file, 'r'; encoding="UTF-8") 
text = d.read()

1 Ответ

0 голосов
/ 05 июля 2018

То, что вы просите, это

re.findall(r'(?m)^\s*Hello\s*[^?]+', d)

, где d - это весь файл, считываемый как одна строка. Смотрите это демо . Это немного уязвимо, так как не будет работать правильно, если содержимое содержит ?.

Я предлагаю читать построчно, проверять, начинается ли строка с ---, а затем добавлять последующие строки в текущую запись.

См. Следующее Демонстрация Python :

items = []
tmp = ''
with open(file, 'r'; encoding="UTF-8") as d:
for line in d:
    if (line.strip().startswith('---')):
        if tmp:
            items.append(tmp.strip())
            tmp = ''
    else:
        tmp = tmp + line + "\n"
if tmp:
    items.append(tmp)

print(items)    

Выход:

['Hello\n\n During Test of mycomputerone following misconfiguration were detected\n - bad ip adress\n - bad name\n\n please could take the action to correct it and come back to us?', 
 'Hello\n\n During Test of mycomputertwo following misconfiguration were detected\n - bad ip adress\n - bad name\n - administrative share available\n\n please could take the action to correct it and come back to us?']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...