在python中查找另一个文件中的一个文本文件的条目

时间:2016-06-22 11:55:52

标签: python string compare readfile

我有两个文件。文件 A 在每行中都有一些条目,我需要查找文件 B 中是否找到任何条目。这是我的脚本(使用两个函数):

def readB(x):
 with open('B.txt') as resultFile:
    for line in resultFile:
        if x in line:
            print x


def readA():
 with open('A.txt') as bondNumberFile:
    for line in bondNumberFile:
        readB(line)

readA()

此脚本查找第二个文件中的第一个条目,然后找不到下一个条目。这可能有什么问题?

文件A如下所示:

122323 
812549
232335
921020

和文件B看起来像这样:

696798  727832  750478  784201  812549  838916  870906  890988  921020  
697506  727874  751037  784955  813096  838978  872494  891368  921789  
696798  727832  750478  784201  812549  838916  870906  890988  921020  
697506  727874  751037  784955  813096  838978  872494  891368  921789  

2 个答案:

答案 0 :(得分:1)

您不一定需要定义执行此操作的函数

with open('a.txt') as a, open('b.txt') as b:
    result = set(a.readlines()) & set(b.readlines())

如果它们都有相同的行,它将在一组中返回它们。

如果真的想要一个功能,你可以像这样写

def compare(file1: str, file2: str) -> set:
    with open(file1) as f1, open(file2) as f2:
        return set(f1.readlines()) & set(f2.readlines())

答案 1 :(得分:1)

删除换行条目

Python在您阅读行时包含换行符 - 您的第一个条目读为1223232\n。剥去换行符,它会起作用。

def readA():
    with open('A.txt') as bondNumberFile:
        for line in bondNumberFile:
            readB(line.rstrip())