script python para comparar 2 arquivos ignorando o carimbo de data / hora


1

Eu tenho dois arquivos de log: log Ae log B. Seu conteúdo é algo como:

log 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....

log 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.....

Eu quero comparar os dois arquivos de log, mas ignorando o carimbo de data / hora, ou seja, os primeiros 20 caracteres de ambos os arquivos. Eu sou novo no Python, portanto, não sei como escrever um script Python que possa comparar esses dois arquivos ignorando o carimbo de data / hora.

Respostas:


1

Se o registro de data e hora sempre tiver o mesmo formato - por exemplo, sempre 20 caracteres, você poderá ignorá-los e compará-los usando lineA[20:]e lineB[20:].

Para obter o diff de duas strings, você pode usar o difflib para python. O código a seguir foi retirado desta resposta no 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() 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.