首页 > 解决方案 > 提取列表中不存在的单词

问题描述

我的最终目标是打印一个文件中存在而另一个文件中不存在的项目列表。

我尝试将每个文件更改为列表并比较列表,但它仍会打印出第一个列表中的所有项目。(也对比较列表以外的其他方法开放)

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 行相互比较

标签: pythonpython-3.x

解决方案


您正在比较两个文件之间的行,而不是比较单词。您可以制作这样的单词列表,然后您的代码应该可以工作:

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

推荐阅读