1

У меня есть два файла журнала: log A и log B Их содержимое что-то вроде:

журнал A

2014-07-12 09:50:33,904 dk,jnbxkmgl,mb.;/lkngjn.....

2014-07-12 09:56:45,060 ;lkjdgzkblnx.m.mc;xgjjjjjj....

2014-07-12 10:00:00,001 uzlk>FFhkshfGBKNMlaL>Djgdkgh....

журнал B

2015-06-12 08:50:33,904 gk;s'ahdsjgkagZCXseiutr....

2015-08-12 07:56:45,060 pisazffksikfdjggdkjhfg...

2015-09-12 10:00:00,001 ffffsajggjaaaaaa.....

Я хочу сравнить два файла журнала, но игнорируя их метку времени, т.е. первые 20 символов обоих файлов. Я новичок в Python, поэтому не уверен, как написать сценарий Python, который может сравнивать эти два файла, игнорируя метку времени.

1 ответ1

1

Если отметка времени всегда имеет один и тот же формат - например, всегда длиной 20 символов, вы можете игнорировать и сравнивать их, используя lineA[20:] и lineB[20:] .

Чтобы получить разность двух строк, вы можете использовать difflib для python. Следующий код был взят из этого ответа на StackOverflow

import difflib

cases=[('afrykanerskojęzyczny', 'afrykanerskojęzycznym'),
       ('afrykanerskojęzyczni', 'nieafrykanerskojęzyczni'),
       ('afrykanerskojęzycznym', 'afrykanerskojęzyczny'),
       ('nieafrykanerskojęzyczni', 'afrykanerskojęzyczni'),
       ('nieafrynerskojęzyczni', 'afrykanerskojzyczni'),
       ('abcdefg','xac')] 

for a,b in cases:     
    print('{} => {}'.format(a,b))  
    for i,s in enumerate(difflib.ndiff(a, b)):
        if s[0]==' ': continue
        elif s[0]=='-':
            print(u'Delete "{}" from position {}'.format(s[-1],i))
        elif s[0]=='+':
            print(u'Add "{}" to position {}'.format(s[-1],i))    
    print() 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .