You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则re.sub()拆分PDF转文本中连写的句子?

解决re.sub()拆分连写句子时的转义错误问题

错误原因

你在re.sub()的替换字符串里使用了\w、\s这类正则转义序列,但替换参数是普通字符串,不是正则模式,Python会将\w识别为无效的转义字符,因此抛出"bad escape /w"错误。

正确实现方法

你需要通过正则分组捕获或断言来保留原字符,同时添加空格拆分句子,以下是两种可行方案:

方案1:分组捕获替换

利用正则分组捕获句号前后的单词字符,在替换时引用分组内容并插入空格:

import re

text = "... are attended <strong>to.In</strong> fact ..."
fixed_text = re.sub(r'(\w)\.(\w)', r'\1. \2', text)
print(fixed_text)
# 输出:... are attended <strong>to. In</strong> fact ...
  • (\w):捕获句号前的单个单词字符
  • (\w):捕获句号后的单个单词字符
  • r'\1. \2':引用两个分组的内容,中间插入空格和句号

方案2:正向/反向断言替换

使用零宽断言定位需要修改的句号,无需捕获原字符,直接替换为带空格的句号:

import re

text = "... are attended <strong>to.In</strong> fact ..."
fixed_text = re.sub(r'(?<=\w)\.(?=\w)', r'. ', text)
print(fixed_text)
# 输出:... are attended <strong>to. In</strong> fact ...
  • (?<=\w):反向断言,确保句号前是单词字符
  • (?=\w):正向断言,确保句号后是单词字符
  • r'. ':将匹配到的句号替换为带空格的句号

补充说明

之前用re.findall('\w+?\.\w+')能匹配是因为第一个参数是正则模式,支持转义序列,但替换参数不支持,必须用分组引用或直接写目标字符串。

内容的提问来源于stack exchange,提问作者user20309717

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:45:36