вывод из регулярного выражения Python - PullRequest
0 голосов
/ 30 мая 2018

У меня есть эти данные: результат =

Operator       #Hosts   Avg Time   Max Time   #Rows  Est. #Rows  Peak Mem  Est. Peak Mem  Detail
--------------------------------------------------------------------------------------------------------------
01:EXCHANGE         1  136.668ms  136.668ms   1.02K          -1         0              0  UNPARTITIONED
00:SCAN HDFS        1  115.097ms  115.097ms  36.86K          -1  99.97 MB      960.00 MB  edw.dw_loan_int_amt

Я придумал это регулярное выражение (r ". ? ([0-9] +. [0-9] + \ .B). ? [0-9] +. [0-9] + \.? B. *) чтобы получить нужную мне информацию из "Пиковой памяти", в этом случае вывод составляет 99,97 МБ

Что я пытаюсь сделать: Если результат> 90 МБ, то # делайте это

Любая помощь приветствуется.

Это то, что я имею до сих пор, но я получаю: Нет

result = sum_data['summary']
    print result
    m = re.match(r".*?([0-9]+\.[0-9]+\ .B).*?[0-9]+\.[0-9]+\ .?B.*", result)
    print m

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете разбить его на строки, а затем с помощью простого регулярного выражения, например \s{2,} (имеется в виду, по крайней мере, два пробела, возможно, больше).


В Python:
import re

data = """
Operator       #Hosts   Avg Time   Max Time   #Rows  Est. #Rows  Peak Mem  Est. Peak Mem  Detail
--------------------------------------------------------------------------------------------------------------
01:EXCHANGE         1  136.668ms  136.668ms   1.02K          -1         0              0  UNPARTITIONED
00:SCAN HDFS        1  115.097ms  115.097ms  36.86K          -1  99.97 MB      960.00 MB  edw.dw_loan_int_amt
"""

rx = re.compile(r'\s{2,}')

for line in data.split('\n'):
    parts = rx.split(line)
    if len(parts) > 2:
        print(parts[6])


Это дает
Peak Mem
0
99.97 MB

Или - если вы предпочитаете понимание списка:

memory_peaks = [parts[6] 
                for line in data.split('\n')
                for parts in [rx.split(line)]
                if len(parts) > 2]

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