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

使用正则表达式展开文本缩写失败,求可行解决方案

问题分析与解决方案

你的缩写替换失败的核心原因是Python字符串的转义处理问题,加上缺少精准匹配的边界限制,导致正则无法正确识别目标缩写。

具体问题点

你定义的字典键"kl\."在Python中会被自动解析为"kl."(因为反斜杠是转义字符,\.会被简化为.),这使得正则表达式实际匹配的是kl加上任意字符(正则中.是通配符),而非你想要的字面kl.。

修正步骤

1. 正确定义缩写字典的键

使用原始字符串(前缀r)或者双重转义反斜杠,确保正则引擎能识别字面的.:

# 方式1:原始字符串(推荐)
contractions_dict = {
    r"kl\.": "klokken",
}

# 方式2:双重转义反斜杠
contractions_dict = {
    "kl\\.": "klokken",
}

2. 添加单词边界确保精准匹配

为了避免误匹配其他包含kl的单词(比如文本中的kløjes),可以在正则中加入单词边界\b,限定只匹配独立的kl.:

完整修正代码

import re

contractions_dict = {
    r"kl\.": "klokken",
}

text = 'Gl. Syd- og Sønderjyllands Politi er måske kl. 18 kløjes landets mest aktive politikreds på Twitter med over 27.000, som følger med.'

def expand_contractions(s, contractions_dict, contractions_re):
    def replace(match):
        return contractions_dict[match.group(0)]
    return contractions_re.sub(replace, s)

# 加入单词边界的正则表达式
contractions_re = re.compile(r"\b(%s)\b" % "|".join(contractions_dict.keys()))
text = expand_contractions(text, contractions_dict, contractions_re)
print(text)

运行结果

执行后会输出正确替换后的文本:

Gl. Syd- og Sønderjyllands Politi er måske klokken 18 kløjes landets mest aktive politikreds på Twitter med over 27.000, som følger med.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:00:38