You need to enable JavaScript to run this app. Python实现Excel跨表标题与关键词匹配并返回具体命中关键词
优惠活动
大模型
产品
解决方案
定价
更多

Python实现Excel跨表标题与关键词匹配并返回具体命中关键词

核心改造思路

原实现用any()把匹配结果数组压成了纯布尔值,本质上匹配过程已经可以定位到所有命中的关键词,只需要把被any()吞掉的匹配结果保留下来,不需要改动核心匹配规则。

具体调整点

  • 取消any()的结果压平逻辑,保留列表推导中所有满足匹配条件的关键词
  • 提前对关键词做格式归一(转小写、去空值、按需筛选激活状态),和标题分词后的小写规则对齐,避免漏匹配
  • 同时保留原有布尔值判断列,不破坏原有逻辑的兼容性
  • 将标题分词结果转为集合结构,降低逐词匹配的性能开销
    注意:原代码存在大小写匹配偏差:标题分词后统一转成了小写,但关键词列表没有做同样的归一化处理,比如关键词为“Running Shoes”、标题中为“running shoes”时,原逻辑会判定不匹配,改造时会统一处理格式对齐

改造后完整代码

import pandas as pd
import re

file_path ='C:/Users/User/Desktop/data.xlsx'

def get_keyword(file_path):
    """
    获取「Keyword list」工作表中有效(ACTIVE?列为有效状态)的KEYWORD值,转成列表
    """
    df = pd.read_excel(file_path, sheet_name='Keyword list')
    # 对齐原注释逻辑:仅保留激活状态的关键词,可根据实际单元格值调整筛选规则
    active_df = df[df['ACTIVE?'].astype(str).str.lower().isin(['yes', 'true', '1'])]
    # 关键词归一化:去首尾空格、转小写、过滤空值
    keywords = [
        str(kw).strip().lower() 
        for kw in active_df['KEYWORD'].to_list() 
        if str(kw).strip() != ''
    ]
    return keywords

keyword_list = get_keyword(file_path)

def words(phrase: str) -> [str]:
    """
    按非字母/数字字符拆分字符串为单词列表,统一转小写
    """
    return list(map(lambda x: x.lower(), filter(len, re.split(r'\W', phrase))))

def compare_title(file_path):
    """
    读取「Product content」工作表的TITLE列,逐行返回匹配到的关键词列表、匹配状态
    """
    df = pd.read_excel(file_path, sheet_name='Product content')
    df = df.fillna('-')
    
    def get_matched_keywords(title_str):
        # 转集合后查找效率远高于列表,不影响匹配准确性
        title_words = set(words(title_str))
        # 保留所有命中的关键词,不再压成布尔值
        matched_kws = [kw for kw in keyword_list if kw in title_words]
        return matched_kws
    
    # 新增两列:匹配关键词列表、原逻辑的布尔值判断
    df['matched_keywords'] = df['TITLE'].apply(get_matched_keywords)
    df['is_matched'] = df['matched_keywords'].apply(lambda x: len(x) > 0)

    return df

输出效果说明

  • 调用compare_title()后会返回完整的产品内容表,新增两列内容
  • matched_keywords列:逐行展示该标题下命中的所有有效关键词,无匹配时返回空列表
  • is_matched列:和原函数返回的布尔值逻辑完全一致,可直接复用原有判断逻辑
  • 匹配规则没有改动,和原有校验标准完全对齐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.14 00:06:09