擅长:python、mysql、java
<p>您可以根据元素在<code>keyword_list</code>中的存在情况对它们进行分组,并使用<code>" "</code>加入这些组。你知道吗</p>
<pre><code>>>> data = 'i want to buy individual insurance policy and you can get upto 2 millions for the cover do not panic i also want to open fixed deposit account'
>>> keyword_list = ['individual', 'fixed', 'treatments', 'deposit', 'health',
... 'millions', 'panic', 'decision', 'policy', 'insurance', 'account']
</code></pre>
<p>现在,让我们将<code>keyword_list</code>转换为一个集合,这样查找会更快。你知道吗</p>
<pre><code>>>> keys = set(keyword_list)
</code></pre>
<p>现在,让我们根据单词在<code>data</code>中的出现情况来对<code>keys</code>中的单词进行分组,如下所示</p>
<pre><code>>>> from itertools import groupby
>>> [" ".join(grp) for res, grp in groupby(data.split(), keys.__contains__) if res]
['individual insurance policy', 'millions', 'panic', 'fixed deposit account']
</code></pre>
<p>对于传递给<code>groupby</code>的集合中的每个元素,在本例中它是<code>data.split()</code>,将调用<code>keys.__contains__</code>函数。并基于该函数调用的结果,形成组。因为我们只对存在于<code>keys</code>中的项目感兴趣,所以我们在列表理解中使用<code>if res</code>进行过滤。你知道吗</p>