难以在python 3中拆分,搜索和打印文档

时间:2014-12-08 02:19:23

标签: python list dictionary set document

嘿伙计们这是非常基本的东西,但我正在努力操纵一个简单的文本文档进行任务。在文本中有多个故事由“新文档”分隔。我应该将它们放在字典中,并能够根据索引号或搜索条件检索它们。到目前为止,我的字典包含文本中的所有单词作为键及其在每个文档中的位置作为值。如果一个单词出现在多个文档中,则它具有多个值。我想不出在字典中搜索字符串的方法,并返回包含该确切短语的所有文档的索引。

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}

我希望能够搜索整个短语而不是术语。然后返回任何包含整个短语的文档。我很感激帮助,对不起,这可能是一个非常简单的解决方案,我刚刚被困住了一段时间。

1 个答案:

答案 0 :(得分:0)

我会创建字典,其中完整的故事文本作为键,文档编号作为值。然后检查用户输入的短语是否在其中一个键中,然后获得如下文档编号:

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