У меня есть файл журнала, который я пытаюсь проанализировать. Пример файла журнала приведен ниже:
23 октября 13: 03: 03.714012 prod1_xyz (RSVV) [201]: # msgtype = EVENT # server = Web / Dev @ server1web # func = LKZ_WriteData (строка 2992) # rc = 0 # msgid = XYZ0064 # reqid = 0 # msg = конец веб-активности (раздел 200, # SysD 1, файлы 222, байты 343422089928, ошибки 0, прерванные файлы 0, занятые файлы 0)
Я хочу вытащить весь текст, который начинается с хэша, и имеет ключ и значение. Например, # msgtype = EVENT. Любой текст, который имеет только хэш и не имеет знака «=», будет рассматриваться как значение.
Поэтому в приведенной выше записи журнала я хочу получить список, который выглядит следующим образом
#msgtype=EVENT
#server=Web/Dev@server1web
#func=LKZ_WriteData ( line 2992 )
#rc=0
#msgid=XYZ0064
#reqid=0
#msg=Web Activity end (section 200, # SysD 1, Files 222, Bytes 343422089928, Errors 0, Aborted Files 0, Busy Files 0) (Notice the hash present in the middle of the text)
Я попробовал опцию поиска всех регулярных выражений Python, но мне не удалось собрать все данные.
Например:
str='Oct 23 13:03:03.714012 prod1_xyz(RSVV)[201]: #msgtype=EVENT #server=Web/Dev@server1web #func=LKZ_WriteData ( line 2992 ) #rc=0 #msgid=XYZ0064 #reqid=0 #msg=Web Activity end (section 200, # SysD 1, Files 222, Bytes 343422089928, Errors 0, Aborted Files 0, Busy Files 0)'
z = re.findall("(#.+?=.+?)(:?#|$)",str)
print(z)
Вывод:
[('#msgtype=EVENT ', '#'), ('#func=LKZ_WriteData ( line 2992 ) ', '#'), ('#msgid=XYZ0064 ', '#'), ('#msg=Web Activity end (section 200, ', '#')]