Pandas DataFrame指定列按特定字符串截取中间内容的实现问题
Pandas文本截取需求解法
针对你的两个问题,直接给出可运行的实现方案:
问题1:添加OR逻辑匹配两个起始关键词
正则表达式中直接用|表示或逻辑,将两个关键词放在正向预查规则内即可,代码如下:
import re # 仅实现删除两个起始关键词之前的内容 df['PDF_text'] = df['PDF_text'].str.replace( r"^.+?(?=NOTICE OF COUNCIL MEMBERS MOTIONS|Motions on Notice)", "", regex=True )
问题2:删除所有大小写形式的New Business及之后内容
搭配re.IGNORECASE忽略大小写,re.DOTALL让.匹配换行符(适配PDF提取的多行文本场景),代码如下:
# 删除所有大小写形式的New Business及之后的全部内容 df['PDF_text'] = df['PDF_text'].str.replace( r"new business.*", "", regex=True, flags=re.IGNORECASE | re.DOTALL )
一步完成全部截取的合并写法
你也可以把两个规则合并为一行代码,一次性完成前后冗余内容的删除:
import re df['PDF_text'] = df['PDF_text'].str.replace( r"^.+?(?=NOTICE OF COUNCIL MEMBERS MOTIONS|Motions on Notice)|new business.*", "", regex=True, flags=re.IGNORECASE | re.DOTALL )
规则说明
- 如果某行文本不存在指定的起始/结束关键词,替换操作不会生效,会保留原始文本
- 若需处理关键词可能前后有多余空格的场景,可在关键词前后加
\s*适配空白字符
内容的提问来源于stack exchange,提问作者scotiaboy
相关产品推荐
相关产品推荐

