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

如何用Python正则表达式移除称谓前缀的点而非句末点?

解决方案

直接用精准匹配称谓前缀的正则表达式,只替换Mr.和Mrs.里的点号,不会影响句子末尾的点:

import re

text = "Mr. and Mrs. Jackson live up the street from us. However, Mrs. Jackson's son lives in the street parallel to us."
result = re.sub(r'\b(Mr|Mrs)\.', r'\1', text)
print(result)

运行结果:

Mr and Mrs Jackson live up the street from us. However, Mrs Jackson's son lives in the street parallel to us.

为什么你的代码不行?

你之前用的re.sub('\.(?!$)', '', text)会移除所有不在句子末尾的点号,范围太宽泛——如果文本里还有其他非称谓的缩写点号(比如Dr.、etc.)也会被误删。而上面的正则通过\b(Mr|Mrs)\.精准匹配称谓前缀后面的点,\b是单词边界,确保只匹配独立的Mr./Mrs.,不会误匹配其他包含这些字符的单词,然后用\1保留Mr/Mrs本身,去掉后面的点。

如果需要支持更多称谓(比如Dr.、Ms.),只需要在括号里添加对应的前缀:

result = re.sub(r'\b(Mr|Mrs|Ms|Dr)\.', r'\1', text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:35:45