如何从多个句子中返回列表中的关键字



我有一个关键字列表,我希望在句子列表中匹配这些关键字。如果在该句子中找到,则在列表中返回找到的关键字。

我尝试过的:

sentence = df['List of Content']
list_of_words = ['keyword1','keyword2', 'keyword3']

如果我只选择一行,下面的操作有效:

[word for word in list_of_words if word in sentence[0]

并输出

output: ['keyword1', 'keyword3']

所有行的理想输出是匹配句子的关键字列表。类似这样的东西:

matching_keywords = [['keyword1', 'keyword3'],['keyword2, 'keyword3'],['keyword1', 'keyword2']..]

然而,当我在整个列表中运行for循环时,它只输出一个空列表[]


我也尝试过嵌套for循环:

kwords = []
for row in MCC:
for x in list_of_words:
if x in row:
kwords.append(x)

它要么再次给我一个空的括号列表[],要么只是创建一个重复它们自己的关键字的长列表。

我犯了什么错误?任何人都可以试着帮我制定逻辑/解决方案。

您可以通过执行以下操作来扩展您的初始方法。

[[word for word in list_of_words if word in row] for row in sentence]

解释:这相当于嵌套列表理解。对于每一行,我们都需要一个出现在该行中的关键字列表。根据列表理解,这应该写为

[<list of keywords in row> for row in sentence]

另一方面,如果您正在查看一个特定的行(例如,row = sentence[0](,那么当您在问题中陈述时,可以使用[word for word in list_of_words if word in row]获得该行中出现的关键字列表。把这些放在一起就得到了我上面写的结果,即

[[word for word in list_of_words if word in row] for row in sentence]

最新更新