从句子输入中检查关键字,然后在Python中检查文本文件

时间:2015-11-15 19:00:36

标签: python

我一直在学习Python,但我遇到了一些困难。我想创建一个用户可以输入句子的程序。程序然后将句子分开并根据列表检查单词。如果在列表中找到任何单词,则它会在文本文件中找到该单词并打印该单词所在的文本文件的行。

到目前为止,我有这个:

    def getTakeaway():
    list = ["pizza", "italian", "chinese", "indian"]
    query = input("Please say what take away you'd like").lower()
    if set(list).intersection(query.split()):
        with open('takeaway.txt') as f:
            for line in open('takeaway.txt'):
                if query in line:
                    print (line)
                    break
    else:
        print("sorry not found")
getTakeaway()

它适用于单个字输入,例如'pizza',但是当我搜索“我想吃披萨”这样的输入时,我什么也得不到。

提前致谢。

编辑:我已根据给出的建议将代码更改为:

def getTakeaway():
    list = ["pizza", "italian", "chinese", "indian"]
    query = input("Please say what take away you'd like").lower()
    query_words = set(list).intersection(query.split())
    if query_words:
        with open('takeaway.txt') as f:
            for line in open('takeaway.txt'):
                if query_words in line:
                    print (line)
                    break
    else:
        print("sorry not found")
getTakeaway()

我收到此错误: 如果行中的query_words: TypeError:'in'要求字符串作为左操作数,而不是设置

2 个答案:

答案 0 :(得分:1)

在第

if query_words in line:

您正在使用包含集合的集合(['我','会','喜欢','某些',& #39;比萨'])。表达式"在行中查询"现在会从线上寻找集合。你需要遍历集合中的值,就像你在迭代文件中的行一样:

for word in query_words:
    if word in line:
        ...

答案 1 :(得分:0)

如果您打算在输入和热门列表的交叉点中搜索单词的行,则需要实际执行此操作

iron-input