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

使用python逐文本比较两个不同的文件,python,python-3.x,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')

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

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

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

uod2quk646.com
在some_output_file1.txt文件中,但它是空的。这里有人能帮我一下吗

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

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

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

核心思想是可以的,但是由于第二个文件包含的不仅仅是域,所以您需要首先去掉它

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

一种可能性:

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

你好,我希望你做得很好,你能给我们和你使用的两个文件的例子吗?希望的产出呢?请提前感谢。第一个文件包含域名,第二个文件包含过滤规则。我必须检查过滤规则中描述的是哪个域名的规则。我正试图从两个文件中提取域名,这两个文件都是通用的,并且为其定义了规则,因此您的响应将被命名为@GuillaumeLastecoueres thanksit,以获取AttributeError:“NoneType”对象没有属性“group”,这是因为您的第二个文件中的某些行根本没有域名。我已经更新了我的答案,因此这些行被忽略。我还有一个问题,如果你愿意为我做这件事,我将感谢你@blhsing我也在尝试获取仅包含此类rule/example.js$script的规则类型,domain=example.com您能帮我做一个patteren吗?这样我就可以从过滤器列表中获取这种类型的规则了?很高兴能为您提供帮助。但这确实超出了这个问题的范围。请用格式化的代码在新问题中提问,以便人们能够更好地提供帮助。如果遇到子字符串未找到的错误,请您在@mhhollomon完成我的代码,因为我仍处于学习阶段