如何在pandas的extract函数中使用单词列表生成正则匹配规则
实现方案
首先明确你之前join失败的核心原因:pandas.Series.str.extract要求传入的正则表达式必须包含至少一个捕获组(即外层包裹括号的匹配规则),如果仅拼接得到用|分隔的字符串没有外层括号,方法会无法识别需要提取的内容,直接报错。
正确实现步骤如下:
- 先将所有需要匹配的规则整理为列表
import pandas as pd import re # 你的匹配规则列表,原来写在正则里的项都可以放到这个列表里 match_rules = [ r"SECTION.?\dRADÔME", "PROFONDEUR ET TAB", "PRINCIPAL GAUCHE", "PRINCIPAL DROIT", "PLAN FIXE VERTICAL", "PLAN FIXE HORIZONTAL", "MOTEUR", "KARMAN", "HÉLICE", "GOUVERNAIL ET TAB", "CÔNE ARRIÈRE" ]
- 拼接生成符合要求的正则表达式,外层主动加括号形成捕获组
# 如果规则里包含自定义正则元字符(比如示例里的.?、\d),直接拼接即可 extract_pattern = f"({'|'.join(match_rules)})" # 补充:如果所有匹配项都是普通文本、没有正则元字符,建议加re.escape避免特殊字符干扰 # extract_pattern = f"({'|'.join(re.escape(rule) for rule in match_rules)})"
- 直接调用extract方法即可,效果和你原来逐个写在括号里的代码完全一致
df["description"].str.extract(extract_pattern)
内容的提问来源于stack exchange,提问作者grinim
相关产品推荐
相关产品推荐

