擅长:python、mysql、java
<p>嘿,我不知道这个解决方案是否是最优的,但它是有效的。我刚刚用8替换了点,用9替换了“('6')”,不知道为什么str.findall会忽略这些字符</p>
<p>{8,6,9}与{'.','('.',')}之间的一种双射</p>
<pre><code>for i in range(len(Keywords)):
Keywords[i] = Keywords[i].replace('(','6').replace(')','9').replace('.','8')
for i in range(len(df['People'])):
df['People'][i] = df['People'][i].replace('(','6').replace(')','9').replace('.','8')
</code></pre>
<p>然后应用你的函数</p>
<pre><code> pat = '|'.join(r"\b{}\b".format(x) for x in Keywords)
df["found"] = df['People'].str.findall(pat).str.join('; ')
</code></pre>
<p>最后一步返回{'.','('.',')}</p>
<pre><code>for i in range(len(df['found'])):
df['found'][i] = df['found'][i].replace('6','(').replace('9',')').replace('8','.')
df['People'][i] = df['People'][i].replace('6','(').replace('9',')').replace('8','.')
</code></pre>
<p>瞧</p>