用于比较两个文件并输出diff的Python代码

时间:2016-12-22 05:30:43

标签: python

我有代码比较每个文件中某些行的两个不同文件并打印差异。假设两个文件都有一条共同的行,但在其中一个文件中,这一行在最后有一个额外的空格。

实施例

File1中:

1)我要比较的行

文件2:

1)我要比较的行(这行末尾有一个额外的空格)

当前代码认为这些行是不同的,因为文件2中行末尾的空格,我如何修改代码,使其忽略行尾的空格,并不认为这些行是不同的。

当前代码:

with open('file1.txt') as f:
    f1 = f.read().strip().splitlines()
f1a = set(f1)

with open('file2.txt') as f:
    f2 = f.read().strip().splitlines()
f2a = set(f2)

print "only in file1 and not in file2"
for diff in f1a-f2a:
    print f1.index(diff), diff

print "only in file2 and not in file1"
for diff in f2a-f1a:
    print f2.index(diff), diff

1 个答案:

答案 0 :(得分:0)

您当前剥离了读取字符串,因此您在第一行之前和最后一行之后删除了空格,之后将字符串拆分为换行符。你想要的是剥离每一行。 使用像

这样的东西
f1 = [line.strip() for line in f.readlines()]

f1 = [line.strip() for line in f.splitlines()]

和f2相同。我还会考虑使用rstrip代替strip来仅删除尾随的空格,因为它们标记缩进和段落通常很重要。