如何阻止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
相关产品推荐
相关产品推荐

