假设我有两个(巨大的)文件。一个包含单词列表。另一个包含一个单词列表,后跟一些数字;即,格式如下:
文件1:
word1
word2
...
文件2:
word1 n1 n2 n3 n4 n5.....n500
word2 n1 n2 n4 n5 .... n500
...
使用Python 3,重叠文件和从文件2中提取的最有效方法是什么只包含文件1中也包含单词的那些行?为文件2创建字典然后检查它并使用文件1中的单词检查成员资格非常慢。
答案 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'))