Я пытаюсь проанализировать метку времени в файле журнала, который может отображаться в двух разных форматах.В то время как формат # 1 работает отлично, формат # 2 всегда вызывает исключение.Надеюсь, что мудрые здесь могут обнаружить ошибку.
# testing out log parsing
import string
import pyparsing as pp
from pyparsing import *
# timestamp and using suppress
integer = Word(nums)
month = Word(alphas)
timeZoneOffset = Word("+-",nums)
timeZoneOffset1 = Word(alphas)
log4 = Group( Suppress("[") +
Combine( integer + "/" + month + "/" + integer +
":" + integer + ":" + integer + ":" +
integer ) + timeZoneOffset +
Suppress("]") )
datetime = "[20/Jan/2003:08:55:36 -0800]"
serverdatetime = log4.parseString(datetime)
print(serverdatetime)
log5 = Group( Suppress("[") +
Combine( month + month + integer + integer +
":" + integer + ":" + integer + integer )
+ timeZoneOffset1 +
Suppress("]") )
log6 = "[" + Word(alphas) + Word(alphas) + Word(nums) + Word(nums)
+ ":" + Word(nums) + ":" + Word(nums) + restOfLine + "]"
datetime1 = "[Thu Nov 01 15:02:52 2018 UTC]"
serverdatetime1 = log6.parseString(datetime1)
print(serverdatetime1)
Это вывод, который я получаю:
python test_message.py
[['20/Jan/2003:08:55:36', '-0800']]
Traceback (most recent call last):
File "../python3.6/site-packages/pyparsing.py", line 1379, in
_parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "../python3.6/site-packages/pyparsing.py", line 2410, in
parseImpl
if (instring[loc] == self.firstMatchChar and
IndexError: string index out of range
pyparsing.ParseException: Expected "]" (at char 30), (line:1,
col:31)