如何用Python匹配替换字符串列表中特定单词后直至逗号的内容
错误原因
你原来的正则r'info_concern[^,]*.+?,存在冗余匹配逻辑:[^,]*已经匹配了info_concern后所有非逗号的字符,后续追加的.+?,会额外多匹配到下一个逗号前的内容,最终导致替换范围出错。
正确实现
你只需要匹配info_concern开头、后续直到逗号前的所有内容,直接替换为info_concern即可,正则规则为r'info_concern[^,]*'。
方案1:沿用列表推导写法
import re df['replaced_text'] = [re.sub(r'info_concern[^,]*', 'info_concern', x) for x in df['text']]
方案2:更高效的Pandas向量化操作(推荐)
直接用Pandas内置的字符串替换方法,无需手动循环:
df['replaced_text'] = df['text'].str.replace(r'info_concern[^,]*', 'info_concern', regex=True)
效果验证
上述代码对你的示例数据处理后,输出完全符合预期:
replaced_text ,info_concern,replaced_mod,replaced_rad ,info_concern,info_concern,replaced_unit ,replaced_link
内容的提问来源于stack exchange,提问作者code_learner
相关产品推荐
相关产品推荐

