使用python通过文本比较两个不同的文件

时间:2019-03-23 09:47:39

标签: python python-3.x

我试图在两个不同的文件之间找到相同的单词/文本,但没有得到我想要的结果。

我试图逐行比较,但没有得到结果

with open('top_1k_domain.txt', 'r') as file1:
with open('latesteasylist.txt', 'r') as file2:
    same = set(file1).intersection(file2)

 same.discard('\n')

 with open('some_output_file1.txt', 'w') as file_out:
for line in same:
    file_out.write(line)

就像我的第一个包含文本的文件

 google.com
 youtube.com
 facebook.com
 doublepimp.com
 uod2quk646.com
 qq.com
 yahoo.com
 tmall.com

第二个文件所在的位置

 ||doublepimp.com^$third-party
 ||uod2quk646.com^$third-party
 ....etc

它没有产生我正在寻找的输出       doublepimp.com      和some_output_file1.txt文件中的uod2quk646.com,但它为空。有没有人可以帮助我

2 个答案:

答案 0 :(得分:1)

通过集合交集,两个集合中的项目只有在它们相同的情况下才匹配,这在两个文件中是不匹配的,因为第二个文件中的行不仅包含域名,而且还包含域名其他AdBlock语法。

在与第一个文件中的行进行设置交集之前,应从第二个文件中的行中提取域名部分:

import re
same = set(file1).intersection((re.findall(r'[a-z0-9.-]+', line) or [''])[0] + '\n' for line in file2)

答案 1 :(得分:0)

核心思想是可以的,但是由于第二个文件不仅包含域,所以您需要先将其删除。

||example.com^$third-party永远不会等于example.com

一种可能性:

same = set(file1).itersection(set(x[2, x.index('^')-2]+'\n' for x in file2))