截断字符串而不在单词中间结束

新手上路,请多包涵

我正在寻找一种在 Python 中截断字符串的方法,该方法不会截断单词中间的字符串。

例如:

原文:“这真是太棒了。”
“阿呆”截:“这是真的……”
“聪明”截:“这真是……”

我正在寻找一种方法来完成上面的“智能”截断。

原文由 Jack 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 385
2 个回答

我实际上在我最近的一个项目中为此写了一个解决方案。我已经将其中的大部分压缩得更小了。

 def smart_truncate(content, length=100, suffix='...'):
    if len(content) <= length:
        return content
    else:
        return ' '.join(content[:length+1].split(' ')[0:-1]) + suffix

发生的事情是 if 语句检查您的内容是否已经小于截止点。如果不是,它会截断到所需的长度,在空间上拆分,删除最后一个元素(这样你就不会切断一个词),然后将它重新组合在一起(同时添加’…‘) .

原文由 Adam 发布,翻译遵循 CC BY-SA 2.5 许可协议

这是 Adam 解决方案中最后一行的稍微好一点的版本:

 return content[:length].rsplit(' ', 1)[0]+suffix

(这稍微更有效,并且在字符串前面没有空格的情况下返回更合理的结果。)

原文由 bobince 发布,翻译遵循 CC BY-SA 2.5 许可协议

推荐问题