如何从含冗余内容的饮品数据列提取品牌名称?
提取饮品品牌名的解决方案
核心思路
既然你已经掌握了所有目标饮品品牌的名称,最直接高效的方法就是基于已知品牌列表做精准匹配,无需依赖不稳定的固定切片或复杂正则推导。
实现步骤(以Python Pandas为例)
假设你用Pandas处理数据列,可按以下方式实现:
- 定义已知品牌列表
brand_list = ["BALLANTINES", "CHIVAS", "ABSOLUT"]
- 生成正则匹配规则
将品牌列表转为正则表达式,确保匹配完整的品牌名(避免部分字符误匹配):
import re import pandas as pd # 示例数据 df = pd.DataFrame({ "original": [ "WHISKY BALLANTINES12YO 12X1000 ML RESTAGE", "CHIVAS REGAL 12 ANOS 12X1L", "VODKA ABSOLUT 12X1000ML" ] }) # 构建正则模式,优先匹配长品牌(若存在品牌名包含关系,需把长品牌放在列表前面) brand_pattern = r'(' + '|'.join(sorted(brand_list, key=len, reverse=True)) + r')'
- 提取品牌并格式化
# 提取匹配到的品牌,忽略大小写差异 df['brand'] = df['original'].str.extract(brand_pattern, flags=re.IGNORECASE) # 统一转为大写格式(按需调整) df['brand'] = df['brand'].str.upper()
处理结果
| original | brand |
|---|---|
| WHISKY BALLANTINES12YO 12X1000 ML RESTAGE | BALLANTINES |
| CHIVAS REGAL 12 ANOS 12X1L | CHIVAS |
| VODKA ABSOLUT 12X1000ML | ABSOLUT |
注意事项
- 如果品牌名存在包含关系(比如"CHIVAS"和"CHIVAS REGAL"),一定要把更长的品牌名放在列表前面,避免短品牌先被匹配导致结果错误。
- 若原始数据中有大小写混合的情况,
flags=re.IGNORECASE参数能确保匹配不受大小写影响。
内容的提问来源于stack exchange,提问作者Rafael Pereira
相关产品推荐
相关产品推荐

