如何用正则表达式提取皮肤科与风湿科相关字符串?
正则提取修正方案
问题分析
原代码存在以下问题:
- 正则错误使用逗号分隔两个目标模式,但实际数据中两类词汇不会同时出现在同一条记录里
- 未覆盖所有相关词汇(比如
Rheumathology、RHeums) - 未用命名捕获组,导致后续列名映射混乱
正确实现代码
import re import pandas as pd # 模拟输入数据 data = { 'Event Name': [ 'Taltz Seminar for Dermathologists', 'Experiment Results for Taltz', 'Use of Taltz in Rheumathology', 'RHeums Experiences with Taltz' ] } df = pd.DataFrame(data) # 修正后的正则:用命名捕获组分别匹配两类目标词汇 pattern = r'(?P<dermatological>Dermathologists)|(?P<rheumatological>Rheumathology|RHeums)' df_clean = df['Event Name'].str.extract(pattern, flags=re.I) # 可选:空值填充,根据需求调整 df_clean = df_clean.fillna('') print(df_clean.head())
代码说明
(?P<dermatological>Dermathologists):命名捕获组,匹配皮肤科相关词汇,re.I忽略大小写(?P<rheumatological>Rheumathology|RHeums):命名捕获组,匹配风湿科相关的两类词汇- 用
|分隔两个组,表示匹配任意一种情况,每条记录会提取对应类别的词汇,无匹配则为空 - 直接通过命名捕获组生成目标列名,无需额外的
reindex操作
执行后输出结果:
dermatological rheumatological 0 Dermathologists 1 2 Rheumathology 3 RHeums
内容的提问来源于stack exchange,提问作者jacky789
相关产品推荐
相关产品推荐

