Анализ отметки времени двумя способами дает исключение, несмотря на правильность грамматики - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь проанализировать метку времени в файле журнала, который может отображаться в двух разных форматах.В то время как формат # 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)
...