2014-12-08 73 views
0

嘿,這是非常基本的東西,但我努力操作一個簡單的文本文檔作業。文中有多個故事由「新文檔」分隔。我應該把它們放在字典中,並能夠根據索引號或搜索條件檢索它們。到目前爲止,我的字典中包含文本中的所有單詞作爲鍵以及它們在每個文檔中的位置作爲值。如果一個單詞出現在多個文檔中,它具有多個值。我想不出在字典中搜索字符串的方法,並返回包含該精確短語的所有文檔的索引。在python中難以分割,搜索和打印文檔3

def main_menu(): 
file = open("ap_docs2.txt", 'r') 
dict1 = {} 
docNum = 0 
numList = [] 
for line in file: 
    line = line.strip("\n") 
    line = line.strip('.') 
    line = line.strip(',') 
    line = line.lower() 
    if line == "<new document>": 
     docNum += 1 
    else: 
     line = line.split() 
     for i in line: 
      if i in dict1: 
       dict1[i].add(docNum) 
      else: 
       dict1[i] = set(numList) 
       dict1[i].add(docNum) 

這是我的搜索功能:

def search(dict1): 
user_input = input("Enter the phrases you'd like to search") 
user_input = user_input.lower() 
user_input = user_input.strip("\n") 
user_input = user_input.strip('.') 
user_input = user_input.strip(',') 
list1 = user_input.split() 
print(list1) 
for i in list1: 
    if i in dict1: 
     print(i, "is found in", dict1[i], "documents") 

這是文檔:

<NEW DOCUMENT> 
Look on the bright 
side of Life. 
<NEW DOCUMENT> 
look on the very, dark 
side of the Moon 
<NEW DOCUMENT> 
is there life 
on the moon 

如果我搜索 「月亮」,例如它返回:

the is found in documents {1, 2, 3} 
moon is found in documents {2, 3} 

我想能夠搜索w而不是一個術語。然後返回任何包含整個短語的文檔。我很感激幫助,我很抱歉,這可能是一個非常簡單的解決方案,我剛剛停留了一段時間。

回答

0

我會用完整的故事文本作爲鍵和文檔編號創建字典作爲值。然後,只需檢查用戶inputed句話是關鍵之一,然後得到這樣的證件號碼:

for key in story_document_dict: 
    if phrase in key: 
    return story_document_dict[key] 
+0

第一線可'在字典鍵:'(字典是一個不好的名字雖然) – jamylak 2014-12-08 05:44:59

+0

@ jamylak好電話,編輯 – connorwstein 2014-12-08 14:52:46