You need to enable JavaScript to run this app. Pandas按关键词列表顺序重排文本关键词(保留XS后缀)实现咨询
优惠活动
大模型
产品
解决方案
定价
更多

Pandas按关键词列表顺序重排文本关键词(保留XS后缀)实现咨询

Pandas指定关键词绑定后缀的排序处理实现

核心实现逻辑

  • 逐行扫描文本,把符合要求的「核心关键词+可选XS后缀」片段全部识别出来,关键词前面的普通文本(比如"The"、"He was a"这类内容)完全保留,不做改动
  • 记录原来夹在两个关键词之间的分隔符(比如逗号、"or"这类连接词),处理的时候不替换原有连接格式
  • 把识别到的关键词,按照预设的keywords列表的顺序重新排,不管原来的位置在哪:Small永远排第一、Medium排第二、Large排第三,带XS后缀的关键词跟着对应的核心关键词走,不单独调整位置
  • 排序完的关键词,用原来的分隔符串起来,和前缀拼回成完整句子

具体实现步骤

  1. 导入依赖库、定义匹配正则
    正则加入单词边界避免误匹配普通文本中的关键词片段,把可选项XS和核心关键词绑定为一个整体捕获:

    import re
    keywords = ['Small', 'Medium', 'Large']
    # 匹配规则:核心关键词 + 可选的空格+XS,带单词边界避免误匹配
    pattern = re.compile(r'\b(' + '|'.join(keywords) + r')(?:\sXS)?\b')
    

    注意:正则里的单词边界\b是必要的,避免把嵌入在其他单词里的关键词误识别,比如不会把"Smalltalk"里的"Small"、"XLarge"里的"Large"当成目标匹配项。

  2. 编写逐行处理的自定义函数
    函数逻辑完全匹配目标输出的格式要求:

    def process_row(text):
        # 找出当前行所有关键词匹配的位置和内容
        matches = list(pattern.finditer(text))
        # 没有匹配到关键词,直接返回原文本
        if not matches:
            return text
        # 提取第一个关键词之前的固定前缀,完全保留
        prefix = text[:matches[0].start()]
        # 收集所有关键词片段,以及它对应的核心关键词在预设列表中的索引(用于排序)
        keyword_items = []
        for match in matches:
            core_word = match.group(1)  # 提取核心关键词
            full_word = match.group(0)  # 提取带XS的完整关键词片段
            sort_index = keywords.index(core_word)  # 核心关键词的固定排序值
            keyword_items.append( (sort_index, full_word) )
        # 按预设顺序对关键词排序
        sorted_keywords = [item[1] for item in sorted(keyword_items, key=lambda x: x[0])]
        # 提取相邻关键词之间的原始分隔符
        separators = []
        for i in range(len(matches)-1):
            # 两个关键词结束到下一个关键词开始之间的内容就是原始分隔符
            sep = text[matches[i].end(): matches[i+1].start()]
            separators.append(sep)
        # 按原分隔符拼接最终文本
        result = prefix + sorted_keywords[0]
        for i in range(len(separators)):
            result += separators[i] + sorted_keywords[i+1]
        return result
    
  3. 应用到DataFrame列完成批量处理

    df['processed_column'] = df['column'].apply(process_row)
    

效果验证

把示例中的三行文本代入函数处理,输出结果和目标效果完全一致:

  • 原行The Small, Large, Medium → 输出The Small, Medium, Large
  • 原行The fast Medium, Small XS → 输出The fast Small XS, Medium(XS后缀随Small一同排在最前)
  • 原行He was a Medium, Large or Small → 输出He was a Small, Medium or Large

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 14:24:03