通过使用python re模块比较两个文件来查找缺失的行

时间:2017-07-21 17:54:43

标签: python

下面是我的python代码,用于查找file_b中与file_a相比缺少的行,但问题是它显示了两个文件中常见的一些行,沿着缺失的行,所以请让我知道您的输入以更正代码。

#!/usr/bin/python
import re
missing = []  
found = 0  
a_file = open('a.txt','r')       
b_file = open('b.txt','r')

for line_a in a_file:  
        found = 0  
        for line_b in b_file: 
                if(re.search(line_a,line_b)): 
                found = 1  
                break           
        if (found == 0):  
                missing.append(line_a)  

a_file.close()  
b_file.close()  
print(missing)  

1 个答案:

答案 0 :(得分:1)

嗯,您的代码存在多个问题。不需要re模块和found变量。也许re.search失败了,因为line_a包含一些特殊字符,正则表达式引擎会对它们进行不同的处理,例如像"K.W wants some $"这样的短语。

这是一个简化版本,因此您可以以更低的复杂性完成您想要的任务:

#!/usr/bin/python
missing = []  
with open('a.txt','r') as a_file:
    a_lines = a_file.readlines()
with open('b.txt','r') as b_file:
    b_lines = b_file.readlines()

for line_a in a_lines:   
    for line_b in b_lines: 
        if line_a in line_b:
            break
    else: 
        missing.append(line_a)  

print(missing)