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

pandas使用str.contains正则筛选脆鸡肉三明治数据匹配错误如何修正?

问题根因

你当前使用的正则仅通过三个正向先行断言要求Item字段同时存在crispy、chicken、sandwich三个关键词,没有限制三个词的关联关系,也没有排除无关关键词。如果出现类似「grilled chicken sandwich with crispy fries」这类同时包含三个关键词但crispy修饰其他配菜的条目,就会被误匹配到。

可行修改方案

方案1:匹配固定语序短语(适配绝大多数规范命名的菜品场景)

直接匹配三个词连续出现的结构,同时开启大小写不敏感适配不同书写格式:

data_sandwich_crispy = data[data['Item'].str.contains(r'crispy\s+chicken\s+sandwich', regex=True, case=False)]

\s+用于适配词之间可能存在的多个空格、制表符等空白字符,case=False可匹配大写开头、全大写等各种大小写组合的写法。

方案2:保留模糊匹配逻辑,新增排除规则

如果你的数据集里存在三个词顺序不固定的情况(比如chicken sandwich (crispy)这类写法),可以在原有正则基础上新增负向先行断言,直接排除带grilled的条目:

data_sandwich_crispy = data[data['Item'].str.contains(r'^(?=.*crispy)(?=.*chicken)(?=.*sandwich)(?!.*grilled)', regex=True, case=False)]

方案3:非正则写法(可读性更高,不易出错)

如果对正则语法不熟悉,直接用字符串包含判断实现逻辑更清晰:

item_lower = data['Item'].str.lower()
data_sandwich_crispy = data[
    item_lower.str.contains('crispy') &
    item_lower.str.contains('chicken') &
    item_lower.str.contains('sandwich') &
    ~item_lower.str.contains('grilled')
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:03