我试图在两个不同的文件之间找到相同的单词/文本,但没有得到我想要的结果。
我试图逐行比较,但没有得到结果
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
,但它为空。有没有人可以帮助我
答案 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))