模糊文件差异

时间:2017-01-04 19:09:23

标签: python python-3.x

我可以找到关于模糊搜索的几个资源,但没有关于模糊文件/字符串比较的资源。有没有办法比较文件而忽略简单的差异(如日期和电子邮件地址)?

我正在考虑一个可以传递2个字符串的函数/工具和正则表达式列表。返回将是一个差异列表,除了与传递的正则表达式匹配的差异。

作为第一遍,我正考虑包装difflib并测试与传递的正则表达式的差异对,但有没有更好的方法来实现这一点?

1 个答案:

答案 0 :(得分:1)

假设您有一个元组列表,其中每个元组都有一个正则表达式和一个字符串

re.sub

我们可以构建一个由此产生的生成器管道,它将使用import re def replace(pat, repl, iterable): pat = re.compile(pat) for string in iterable: yield pat.sub(repl, string) def reader(filelist): for name in filelist: with open(name) as f: yield f.read() filelist = ['filename1.txt', 'filename2.txt', ...] patterns = [(r'\d\d?/\d\d?/\d\d\d\d', '00/00/0000'), ...] source = reader(filelist) gen = source for pat, repl in patterns: gen = replace(pat, repl, gen) for string in gen: print(string) 执行连续替换,以混淆日期,时间,电子邮件地址等方面的差异。

for

在上一个gen循环中,diff是一个生成文件的已清理内容的生成器。在这里我打印它们,但您可以将它们写回文件,保存它们,一次分析一个,或运行一些迭代{{1}}。