python - 提取列表中不存在的单词
问题描述
我的最终目标是打印一个文件中存在而另一个文件中不存在的项目列表。
我尝试将每个文件更改为列表并比较列表,但它仍会打印出第一个列表中的所有项目。(也对比较列表以外的其他方法开放)
File1 水果
apples
bananas
blueberries
watermelons
oranges
kiwis
File2 吃
I like to eat apples
I like to eat bananas
I like to eat oranges
I like to eat watermelon
示例脚本
fruitList = [line.rstrip('\n') for line in open("fruits")]
eatsList = [line.rstrip('\n') for line in open("eats")]
for item in fruitList:
if item not in eatsList:
print(item)
这只是我为实现最终目标而尝试创建的一个小样本
我想将fruits文件与eats文件进行比较,并仅找到eats文件中不存在的水果
所以 end 应该是一个只包含蓝莓猕猴桃的文件
除了比较两个列表之外,我对其他方法持开放态度,最终要比较的文件将有 7-12000 行相互比较
解决方案
您正在比较两个文件之间的行,而不是比较单词。您可以制作这样的单词列表,然后您的代码应该可以工作:
with open("fruits") as f:
fruitList = [
word
for line in f
for word in line.rstrip('\n').split(" ")
]
with open("eats") as f:
eatsList = [
word
for line in f
for word in line.rstrip('\n').split(" ")
]
for item in fruitList:
if item not in eatsList:
print(item)
或者您可以通过使用集合和集合操作来提高效率:
with open("fruits") as f:
fruits_set = {
word
for line in f
for word in line.rstrip('\n').split(" ")
}
with open("eats") as f:
eats_set = {
word
for line in f
for word in line.rstrip('\n').split(" ")
}
missing_items = fruits_set - eats_set
推荐阅读
- excel - 如何在 Excel VBA 中刷新所有内容?
- maven - 未授权和“parent.relativePath”指向没有本地 POM @ 第 4 行,第 10 列
- azure-functions - Azure App 服务功能在正常工作一个月后失败
- ruby-on-rails - 从黄瓜测试生成 REST API 文档
- python - 在 python vaex 中删除重复的行
- css - 使用 auto-fit 和 minmax() 使 CSS 12 列网格响应
- angular - 值更改时输入动画 Angular 2+
- python - panda timedelta64[ns] 到年
- php - 检查 SSL 的功能加载时间过长
- python - 无法在 Dataproc 上运行 pySpark 作业