<p>我的名单</p>
<pre><code>mylist = [apple, banana, grape]
</code></pre>
<pre><code>df
text
I love banana
apple is delicious
I eat pineapple
hate whitegrape
</code></pre>
<p>要匹配文本中包含列表的内容,请执行以下操作</p>
<pre><code>mylist = [f"(?i){re.escape(k.lower())}" for k in mylist]
extracted = df['text'].str.lower().str.findall(f'({"|".join(mylist)})').apply(set)
df['matching'] = extracted.str.join(',')
</code></pre>
<p>匹配有一个问题,但由于列表前面没有空格,我要找的“苹果”包含在“菠萝”中,所以它匹配</p>
<p>作为另一个例子,我在寻找“葡萄”,但葡萄包含在白葡萄中,所以这也是计算</p>
<p>如何在列表中每个索引的开头留出一个空格</p>
<pre><code>result above
text matching
I love banana banana
apple is delicious apple
I eat pineapple apple
hate whitegrape grape
</code></pre>
<p>结果是我想要的</p>
<pre><code>text matching
I love banana banana
apple is delicious apple
I eat pineapple
hate whitegrape
</code></pre>
<p>您可以使用:</p>
<pre><code> df.text.str.extract(f"(?i)\\b({'|'.join(mylist)})\\b")
0
0 banana
1 apple
2 NaN
3 NaN
</code></pre>
<p>当然,您可以根据您的示例将<code>extract</code>更改为<code>findall</code></p>