如何修改pandas正则表达式,从产品列中提取对应数量生成新列
你的原有代码存在两个核心问题:
- 用方括号
[]包裹剂型关键词属于语法错误:方括号的作用是匹配单个字符,内部的|会被识别为普通字符,无法实现「匹配任意一个完整剂型词」的效果 - 没有覆盖你提到的所有剂型标识,缺少COMP、AMP等关键词
修改后的代码如下:
import re # 正则说明: # (\d+(?:\.\d+)?) : 匹配整数或小数作为提取的数量值 # \s* : 数量和剂型之间允许有0到多个空格 # (?:TAB|COMP|AMP|SOB|PAST|GRAG|CAP) : 非捕获组,匹配所有可能的剂型关键词,新增需要的剂型直接用|分隔追加即可 # \b : 单词边界,避免剂型关键词和其他单词拼接时被误匹配 df['PZ'] = df['PRODUCTS'].str.extract(r'(\d+(?:\.\d+)?)\s*(?:TAB|COMP|AMP|SOB|PAST|GRAG|CAP)\b', flags=re.IGNORECASE)
上述代码可以完全匹配你给出的所有样例,输出的PZ列和你预期的结果完全一致。如果后续有新的剂型需要适配,直接在正则的剂型分组里追加对应的关键词即可。
内容的提问来源于stack exchange,提问作者Alvaro Alvarez
相关产品推荐
相关产品推荐

