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

如何优化字典嵌套列表场景下的正则表达式标题分类匹配?

问题分析

你的现有代码逻辑完全搞反了——原代码是在匹配分类名称(也就是categories字典的键,比如phone),但你的实际需求是匹配分类对应的关键词列表(字典的值,比如phone对应的["Oppo", "iPhone", ...]),这就是为啥明明标题里有关键词却总是返回general的原因。

优化后的实现

下面是基于你现有字典结构的修复方案,完全不用正则,只通过字符串匹配实现,同时处理大小写问题:

def put_category(categories, text):
    # 统一转小写,避免大小写不匹配的问题
    lower_text = text.lower()
    # 遍历每个分类及其对应的关键词列表
    for category, keywords in categories.items():
        # 检查当前分类的所有关键词
        for keyword in keywords:
            # 关键词也转小写,确保匹配一致
            if keyword.lower() in lower_text:
                # 匹配到就直接返回对应分类
                return category
    # 没有匹配到任何分类,返回general
    return 'general'
关键说明
  • 统一转小写:不管标题里的关键词是大写还是小写(比如OPPO或oppo),都能正确匹配
  • 遍历逻辑:按字典顺序检查每个分类的关键词,一旦找到匹配就返回对应分类(如果需要调整分类优先级,只要调整categories字典里键的顺序即可)
  • 纯字符串匹配:完全符合你“不使用纯正则或模糊匹配”的要求

比如测试你的示例标题:

categories = {
    "phone": ["Oppo", "iPhone", "Samsung"],
    "camera": ["night shots", "lens"],
    "general": []
}
title = "Capture Perfect Night Shots with the Oppo Reno8 Series"
print(put_category(categories, title))  # 输出: phone

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:46:31