我一直在学习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'要求字符串作为左操作数,而不是设置
答案 0 :(得分:1)
在第
行if query_words in line:
您正在使用包含集合的集合(['我','会','喜欢','某些',& #39;比萨'])。表达式"在行中查询"现在会从线上寻找集合。你需要遍历集合中的值,就像你在迭代文件中的行一样:
for word in query_words:
if word in line:
...
答案 1 :(得分:0)
如果您打算在输入和热门列表的交叉点中搜索单词的行,则需要实际执行此操作
iron-input