我有一个关键字列表,我希望在句子列表中匹配这些关键字。如果在该句子中找到,则在列表中返回找到的关键字。
我尝试过的:
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]