首页 > 解决方案 > 如何在文本文件的相同段落中搜索多个关键字?

问题描述

我想在列表中搜索两个关键字的组合是否在要分析的文本的同一段落中。

例子:

我有一个文本文件并创建了两个由各种关键字组成的列表(list_a和)。list_b我想检查是否在我的文本的同一段落中找到了一个关键字和一个list_a关键字list_b(列表中的这些关键字中的哪一个无关紧要,重要的是一个关键字list_a和一个关键字)。list_b

我尝试了以下方法:

  1. 我把我的文本文件分成几段
splitted_text = raw_text.split('\n\n')
  1. 我创建了一个函数:
def textContainsKeywords(text, target_words, second_target):
   for target in target_words:
       if target in text:
           for target2 in second_target: 
               if target2 in second_target: 
                  return True
   return False
  1. 我调用函数如下:
target_words = ["residual income", "return on capital employed", "roce", "return on asset", "roa", "return on investment", "roi", "return on"]

second_target = ["weighted average costs of capital", "cost of capital", "cost of equity", "wacc"]

for paragraph in splitted_text:
    if textContainsKeywords(paragraph, target_words, second_target)
        print(paragraph)

如果我运行此代码,我总是收到仅包含“second_target”关键字而不是“second_target”和“target_words”的段落。有人有实现我目标的想法吗?

标签: pythonlistkeyword

解决方案


def textContainsKeywords(text, target_words, second_target):
 for target in target_words:
   if target in text:
       for target2 in second_target: 
           if target2 in text: #changes from second__target to text
              return True
return False

对于您的问题,请尝试:

for paragraph in splitted_text:
   a=bool(textContainsKeywords(paragraph,target_words, second_target))
   if a:
      print(paragraph)

推荐阅读