gpt4 book ai didi

python - 模糊文件差异

转载 作者:太空宇宙 更新时间:2023-11-04 05:16:55 24 4
gpt4 key购买 nike

我可以找到一些关于模糊搜索的资源,但没有关于模糊文件/字符串比较的资源。有没有什么方法可以在忽略简单差异(例如日期和电子邮件地址)的情况下比较文件?

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

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

最佳答案

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

[(r'\d\d?/\d\d?/\d\d\d\d', '00/00/0000'), ...]

我们可以以此为基础构建生成器管道,使用 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

关于python - 模糊文件差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41471500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com