You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame行中提取多词目标短语?现有代码仅支持单词

解决多词短语匹配问题

你的问题出在原代码是按单个单词拆分句子后匹配,没法识别由多个单词组成的短语。要同时匹配单字和多词短语,用正则表达式的精确匹配更合适,具体步骤如下:

  1. 构建正则匹配模式:把negative_words里的每个元素转成正则字面量(避免特殊字符干扰),用|连接所有元素,确保能匹配到完整的单字或短语。
  2. 提取匹配内容:用re.findall从每条推文里找出所有符合模式的内容,再用空格拼接成字符串。

完整代码示例

import pandas as pd
import re

data = pd.DataFrame({
    'Tweets' : ['This is bad', 'This is terrible', 'This is good', 'This is great but trouble of life']
})

negative_words = ['bad', 'terrible', 'trouble of life']

# 构建正则模式,转义每个词避免特殊字符影响
pattern = r'(' + '|'.join(re.escape(word) for word in negative_words) + r')'
# 提取所有匹配的内容并拼接
data['searched_text'] = data['Tweets'].apply(lambda x: ' '.join(re.findall(pattern, x)))

print(data)

运行结果

Tweets      searched_text
0                        This is bad                bad
1                     This is terrible           terrible
2                         This is good                  
3  This is great but trouble of life  trouble of life

补充说明

  • 用re.escape()处理每个关键词,是为了避免关键词里包含正则特殊字符(比如.、*)时导致匹配出错。
  • 如果需要严格匹配单词边界(比如避免把badly里的bad误匹配出来),可以给模式加上单词边界标记\b,修改后的模式为:
    pattern = r'\b(' + '|'.join(re.escape(word) for word in negative_words) + r')\b'
    

内容的提问来源于stack exchange,提问作者waji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:24:08