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

如何阻止wordninja库移除句子标点,保留字符串中的句号

解决wordninja.split()移除句号的问题

wordninja的split()方法默认会过滤掉非字母数字类字符,所以句号会被自动移除。要保留字符串中的句号,最稳妥的方式是通过预处理+后处理的流程实现:

  • 预处理:把原字符串中的句号替换成一个特殊的、不会被拆分逻辑干扰的占位标记(比如__DOT__)
  • 拆分:用wordninja.split()处理替换后的字符串
  • 后处理:把拆分结果里的占位标记替换回句号,再拼接成最终字符串

示例代码:

import wordninja

def split_keep_periods(input_str):
    # 第一步:替换句号为占位符
    temp_str = input_str.replace('.', '__DOT__')
    # 第二步:执行拆分
    split_result = wordninja.split(temp_str)
    # 第三步:还原句号并拼接
    final_result = ' '.join([part.replace('__DOT__', '.') for part in split_result])
    return final_result

# 测试示例
test_case = "helloworld.howareyou.today"
print(split_keep_periods(test_case))  # 输出: hello world. how are you. today

如果你的字符串存在连续句号、句号位于首尾等特殊情况,只需调整占位符的替换逻辑即可,比如用正则匹配所有句号场景。不建议直接修改wordninja的源码过滤规则,会影响库的后续更新和稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:04:56