Python正则替换:仅为单行无句号字符串添加句号
实现单行无句号字符串自动添加句号的方案
方案一:结合正则表达式实现
可以通过正则的负向前瞻同时满足「单行」和「末尾无句号」两个条件,直接完成替换:
import re def add_period(s): # 匹配单行且末尾无句号的字符串,替换为原内容加句号 return re.sub(r'^(?!.*\n)(.*[^.])$', r'\1.', s)
正则表达式说明:
^:锚定字符串起始位置(?!.*\n):负向前瞻断言,确保整个字符串中不存在换行符(即单行内容)(.*[^.])$:匹配从起始到结尾的内容,且最后一个字符不是句号\1.:将匹配到的内容后追加句号
测试验证:
- 单行无句号输入:
"This is a sentence"→ 输出"This is a sentence." - 单行带句号输入:
"This is a sentence."→ 输出不变 - 多行输入:
"Item 1\nItem 2\nItem 3"→ 输出不变 - 单行带其他标点输入:
"Hello world!"→ 输出不变(若需要给所有非句号结尾的单行加句号,此正则依然适用)
方案二:直接逻辑判断(更高效直观)
如果需求不需要复杂的正则匹配,直接通过字符串方法判断会更高效:
def add_period(s): # 检查是否是单行,且末尾没有句号 if '\n' not in s and not s.endswith('.'): return s + '.' return s
这种方式避开了正则的开销,对于简单场景更友好,效果和正则方案完全一致。
内容的提问来源于stack exchange,提问作者somethingvague
相关产品推荐
相关产品推荐

