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

如何在句子间添加空格但忽略链接(Python正则场景)

如何在给句号后大写字母加空格时忽略链接中的点?

解决方案1:分割URL与非URL部分分别处理

这种方法通过将文本拆分为链接片段和普通文本片段,仅对普通文本应用空格添加规则,从根源上避免修改链接内的点结构。

代码实现:

import re

def add_space_after_period(text):
    # 用正则分割文本,保留链接部分作为独立片段
    segments = re.split(r'(https?://\S+)', text)
    processed_segments = []
    
    for seg in segments:
        # 判断当前片段是否为链接,是则直接保留
        if seg.startswith(('http://', 'https://')):
            processed_segments.append(seg)
        else:
            # 对普通文本应用原有的空格添加规则
            processed_seg = re.sub(r'\.([A-Z])', r'. \1', seg)
            processed_segments.append(processed_seg)
    
    return ''.join(processed_segments)

解决方案2:占位符替换法

先将所有链接临时替换为唯一占位符,处理完普通文本后再恢复原始链接,适合需要兼容更复杂链接格式的场景。

代码实现:

import re

def add_space_after_period(text):
    # 匹配http/https开头的链接
    url_pattern = r'https?://\S+'
    # 提取文本中所有链接
    urls = re.findall(url_pattern, text)
    
    # 将链接替换为唯一占位符,避免冲突
    for idx, url in enumerate(urls):
        text = text.replace(url, f'__TEMP_URL_{idx}__')
    
    # 对普通文本执行空格添加操作
    text = re.sub(r'\.([A-Z])', r'. \1', text)
    
    # 将占位符还原为原始链接
    for idx, url in enumerate(urls):
        text = text.replace(f'__TEMP_URL_{idx}__', url)
    
    return text

测试示例

输入:

"This is one.This is two. Check this link: https://www.website.com/Article.Name.pdf. Another sentence.This is four."

输出:

"This is one. This is two. Check this link: https://www.website.com/Article.Name.pdf. Another sentence. This is four."

两种方案都能精准区分普通文本和链接,确保仅在句子间的句号后添加空格,完全保留链接内的点结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 16:27:27