Python Разобрать текст - PullRequest
2 голосов
/ 17 июня 2020

Вот текст, мне нужно разобрать;

JAVA_OPTS=blablalba
lbalbalba

1. main1:

     aelo1 2020-06-15 11 4422
     sddg2 2020-06-12 19 422

2. main2:

     fdata3 2020-06-15 11 4422
     gcontent4 2020-06-12 19 422

3. main3:

     hxvnt5 2020-06-15 11 4422
     vcfdet6 2020-06-12 19 422

Мне нужно только разобрать пронумерованный маркер, до следующего маркера. и найдите 4-й столбец больше 1000 и старше 12 часов (время даты 2-го столбца), затем отправьте детали по электронной почте. Я попытался выполнить синтаксический анализ через библиотеку re в python, но не смог этого добиться.

Итак, ожидаемый результат:

    1. main1:

         aelo1 2020-06-15 11 4422

    2. main2:

         fdata3 2020-06-15 11 4422

    3. main3:

         hxvnt5 2020-06-15 11 4422

возможно ли это через bash или python?

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Вот регулярное выражение, которое вы можете использовать для сопоставления (я не уверен, около 12 часов).

\d+\.\s\S+\s+\S+\s[0-9-]+\s\d+\s[1-9][0-9]{3,}
0 голосов
/ 17 июня 2020

Вот решение для вас

def parsing(text):
    if text.strip() == '':
        return ''
    lines = text.split('\n')
    buffer = ''
    for line in lines:
        t = line.strip()
        if t == '' or t[0] in '0123456789':
            buffer += line + '\n'
        else:
            lst = t.split()
            if len(lst) >= 4:
                if (len(lst[1].split('-'))==3 and int(lst[2]) <= 12 and
                        int(lst[3]) > 1000):
                    buffer += line + '\n'
    return buffer.strip()

print(parsing(text))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...