python - 有没有一种方法可以从另一个文件中的一个文件中查找单词并将在另一个文件中找不到的单词输出到一个新文件中?
问题描述
我正在尝试比较 Python 中的两个文件,它们都包含一些单词。我希望代码在 file2 中查找 file1 中的单词,并将 file1 中未找到的单词作为输出放入新文件中。
下面的代码是我尝试过的,但它没有做任何事情。它甚至没有显示错误,所以我不知道出了什么问题或应该有所不同。
file1 = open('C:/Users/Atal/Desktop/School/Project datas/file1.txt')
file2 = open('C:/Users/Atal/Desktop/School/Project datas/file2.txt')
fileContent = file1.read();
fileContent2 = file2.read();
loglist = file1.readlines()
loglist2 = file2.readlines()
file2.close()
line = file1.readline()
file1.close()
found = False
for line in loglist:
if line in loglist2 :
found = True
if not found:
file1 = open('C:/Users/Atal/Desktop/School/Project datas/file1.txt', 'w')
file1.write(line +"\n")
file1.close()
file1 看起来像这样:Peter Jan Richard
file2 看起来像这样:Floyd Richard Bob
新文件应如下所示: Peter Jan
如果有任何方法可以做到这一点,请告诉我。提前致谢。
解决方案
使用 set 而不是 in 像这样:
list_1 = ['Peter', 'Jan', 'Richard']
list_2 = ['Floyd', 'Richard', 'Bob']
set_2 = set(list_2)
main_list = [item for item in list_1 if item not in set_2]
main_list
输出:
['Peter', 'Jan']
推荐阅读
- java - 使用 GUI 时的错误:IllegalStateException
- c# - ?: 后面有两个声明的三元运算符
- javascript - 通过 ReactJS 消费 JSON 数据
- javascript - 异步调用不评估反应中的条件
- javascript - Dynamics365“查找控件错误:无法将 typename= 的项目添加到查找控件”JavaScript 错误
- django-simple-history - 无法设置/读取 Django 简单历史更改原因
- docker - 为什么要求在 Kubernetes PodSecurityPolicy 冗余中删除所有功能,非 root + 禁止特权升级?
- laravel - 如何使用foreach,laravel在视图中显示?
- ssis - SSIS - 仅移动 SQL 命令中返回的文件名
- c# - 将带下划线的字符串转换为 TitleCase