Python,比较两个文件

时间:2017-11-07 05:54:39

标签: python

假设我有两个(巨大的)文件。一个包含单词列表。另一个包含一个单词列表,后跟一些数字;即,格式如下:

文件1:

word1

word2

 ...

文件2:

word1 n1 n2 n3 n4 n5.....n500


word2 n1 n2 n4 n5 .... n500


 ...

使用Python 3,重叠文件和从文件2中提取的最有效方法是什么只包含文件1中也包含单词的那些行?为文件2创建字典然后检查它并使用文件1中的单词检查成员资格非常慢。

2 个答案:

答案 0 :(得分:0)

只有当文件的顺序相同时,这才有效,文件1中的单词纯粹是文件2中单词的一部分:

def gen_overlap(file1, file2):
    for word in file1:
        line = file2.read()
        while word not in line:
            line = file2.read()
        yield line

如果他们未能满足上述任何一个条件,最好的方法是创建所有单词的set

gen_overlap(file1, file2):
    word_set = set(line.split() for line in file1)
    for line in file2:
        if line.split()[0] in word_set:
            yield line

答案 1 :(得分:-1)

使用: -

def file_comp(a_file,b_file):
    with open(a_file,'r') as file1,open(b_file,'r') as file2:
        read1 = file1.read()
        read2 = file2.read()
        return([i for i in read2.split('\n') if i.split(" ")[0] in read1.split('\n')])
print(file_comp('file_1.txt','file_2.txt'))