通过忽略时间戳来比较两个文件的python脚本

通过忽略时间戳来比较两个文件的python脚本

我有两个日志文件:log Alog 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

如果时间戳始终具有相同的格式 - 例如始终为 20 个字符长,则可以忽略并使用lineA[20:]和进行比较lineB[20:]

要获取两个字符串的差异,可以使用 Python 的 difflib。以下代码取自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() 

相关内容