创建表示两个文本文件之间差异的行列表



我有两个文本文件。我想根据两个文件中看到的不同行,找到两个文件之间的百分比差异。我可以使用列表中的行数,然后使用两个文件的行数来计算百分比差异(除非有一些内置的python函数可以这样做(。例如

文件1:

apple
ball
cat
dog

文件2:

ball
cat
elephant

结果列表:

[apple, dog, elephant]

做这件事最简单、最快的方法是什么?

这取决于如何定义"两个文本文件之间的差异"。假设顺序对你来说无关紧要,你只想从两个文件中找到没有出现在另一个文件中的行,这里有一个可能的解决方案:

set_1 = {line.strip() for line in open(file_1_path, 'r').readlines()}
set_2 = {line.strip() for line in open(file_2_path, 'r').readlines()}
difference = (set_1 | set_2) - (set_1 & set_2)

对于序列匹配差异,可以按照wjandrea的建议进行difflib。你可以这样使用它:

import difflib
list_1 = [line.strip() for line in open(file_1_path, 'r').readlines()]
list_2 = [line.strip() for line in open(file_2_path, 'r').readlines()]
difference = [line[2:] for line in difflib.ndiff(list_1, list_2) if line[0] in {'+', '-'}]

最新更新