搜索文本以查看是否存在单词列表,如果存在,则返回单词周围的文本?

问题描述

我有一个功能,当前可以搜索文本以查看是否在其中提及了我的任何关键字。我想增强此功能,以返回找到的关键字和识别后的25个单词。我的代码在下面,但由于未识别“单词”而无法使用:

def searching(text):
    key_words = ["address","home","location","domicile"]
    if any(word in text for word in key_words):
        statement = text[text.find(word) + 1:].split()[0:20]
        my_return = " ".join(statement)
        return my_return 
    else:
        return "No result"

text = I have a pretty good living situation. I am very thankful for my home located in Massachusetts.

我希望我的函数返回“马萨诸塞州的住所”,但出现错误

NameError: name 'word' is not defined

有什么想法吗?

解决方法

您可以将字符串拆分为单词,然后检查结果列表。

您正在返回函数,因此它仅在第一次迭代后返回,您可以在参数中提供关键字。

可以通过以下方式获得期望的结果:

def searching(text):
    key_words = ["address","home","location","domicile"]
    for word in key_words:
        if word in text.split():
            statement = text[text.find(word) + 0:].split()[0:20]
            my_return = " ".join(statement)
            print(my_return)
        else:
            print("No result")

text = "I have a pretty good living situation. I am very thankful for my home located in Massachusetts."

print(searching(text))

输出

No result
home located in Massachusetts.
No result
No result

要在首次匹配时返回匹配项,可以执行此操作并删除else

def searching(text):
    key_words = ["address","domicile"]
    for word in key_words:
        if word in text.split():
            statement = text[text.find(word) + 0:].split()[0:20]
            my_return = " ".join(statement)
            return my_return

text = "I have a pretty good living situation. I am very thankful for my home located in Massachusetts. You can find me at my address 123 Happy Lane."
print(searching(text))

输出

address 123 Happy Lane.