我有两个日志文件: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
如果时间戳始终具有相同的格式 - 例如始终为 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()