2015-11-15 57 views
1

我一直在學習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() 

用於輸入搜索時,它適用於單個單詞輸入如「比薩餅」,但是我得不到任何回報,如「我想比薩」。

在此先感謝。

編輯:我已經改變了代碼此基礎上給出的建議:

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在行: 類型錯誤:「在」要求的字符串作爲左操作數,不設置

回答

0

如果你的目的是搜索詞的線路中的輸入和熱表的路口,你需要做的其實是

query_words = set(list).intersection(query.split()) 
if query_words: 
    ... 
+0

修改我的代碼: '高清getTakeaway(): 名單= [「比薩」, ()「意大利語」,「中國」,「印度語」] 查詢=輸入(「請說什麼帶走你想要的」)。如果QUERY_WORDS: 開放( 'takeaway.txt')爲f: 在開線( 'takeaway.txt'): 如果行QUERY_WORDS: 打印(線) 突破 其他: 打印(「對不起,沒有找到」) getTakeaway()' 和我得到這個錯誤: 如果QUERY_WORDS在行: 類型錯誤:「在」要求的字符串作爲左操作數,而不是設置 – digitalfire

+0

只要編輯原來的問題,這在這裏難以辨認 – poolie

1

在線路

if query_words in line: 

您正在使用的一組其包含集([ 'I', '將', '象', '一些', '比薩餅'])。表達式「query in line」現在將從行中尋找集合。你需要通過值的集合進行迭代,很多像你通過文件中的行迭代:

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

謝謝。這已經排序了! – digitalfire

相關問題