2014-12-08 74 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