如何用Python正则实现句号后加空格且不处理数字小数点
Python 正则实现文本句号后空格自动补全
需求描述
- 输入文本示例:
First sentence.Second sentence. Third 3.4 sentence3.Fourth sentence. Fifth5. Sixth. - 预期输出示例:
First sentence. Second sentence. Third 3.4 sentence3. Fourth sentence. Fifth5. Sixth. - 转换规则:句号两侧任意一侧为字母/非数字时,句号后补一个空格;句号两侧均为数字(即小数点位)时不做处理。
实现代码
import re def format_sentence(text): # 匹配所有非小数点的句号,忽略句号后已有的空格,统一替换为句号加单个空格 processed = re.sub(r'(?<!\d)\.\s*|\.(?!\d)\s*', r'. ', text) # 去除末尾多余的空格 return processed.rstrip()
测试验证
# 传入示例输入 input_str = "First sentence.Second sentence. Third 3.4 sentence3.Fourth sentence. Fifth5. Sixth." output_str = format_sentence(input_str) print(output_str)
运行后输出与预期结果完全一致。
正则逻辑说明
(?<!\d)\.\s*:负向向后断言,匹配前面不是数字的句号,同时匹配句号后所有连续空格|:或逻辑\.(?!\d)\s*:负向向前断言,匹配后面不是数字的句号,同时匹配句号后所有连续空格- 两种场景合并覆盖了所有需要补空格的句号,自动排除了小数点位,同时统一处理了句号后原有的多余空格,保证最终格式一致。
内容的提问来源于stack exchange,提问作者Geeths
相关产品推荐
相关产品推荐

