从具有另一个文件Python内容的文件中查找行



所以。。这就是我要做的。。对于数据文件中的每一行,请检查另一个文件是否包含此字符串。

我尝试了其他帖子中的一些内容,但没有一个是好的。

下面的代码表示,它没有找到任何要查找的字符串,即使它们存在于文件中的某个位置。

def search():
    file1= open('/home/example/file1.txt', 'r')
    datafile= open('/home/user/datafile.txt', 'r')
    for line in datafile:
        if line in file1:
            print '%s found' % line
        else:
            print '%s not found' % line
search()

假设第一个文件的内容不是很大,您可以将整个文件读取为字符串,然后使用字符串包含进行检查:

def search():
    file1_content = open('/home/example/file1.txt').read()
    datafile = open('/home/user/datafile.txt')
    for line in datafile:
        if line in file1_content:
            print '%s found' % line
        else:
            print '%s not found' % line

请注意,open的默认模式是'r',因此如果您在文本模式下阅读,则不需要传递该参数。

您可以将该文件读取到set中,然后检查是否包含在第二个文件中。set通常在检查列表中的包含方面更快。

def search():
    file1 = set(open('/home/example/file1.txt'))
    datafile= open('/home/user/datafile.txt', 'r')
    for line in datafile:
        if line in file1:
            print '%s found' % line
        else:
            print '%s not found' % line

您也可以使用设置操作来提取,例如,不在第一个文件中的所有行:

set(open('/home/user/datafile.txt', 'r')) - set(open('/home/example/file1.txt'))

最新更新