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

2024-05-23 16:44:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如:

Original:          "This is really awesome."
"Dumb" truncate:   "This is real..."
"Smart" truncate:  "This is really..."

我在寻找一种方法来完成从上面“聪明”截取。


Tags: 方法字符串issmartthis单词realawesome
1条回答
网友
1楼 · 发布于 2024-05-23 16:44:10

有一些可能对您有问题,也可能没有问题,例如处理制表符(例如,如果您将制表符显示为8个空格,但在内部将其视为1个字符)、处理各种类型的断开和不断开空白,或者允许断开连字符等等(如果需要的话),您可能想看看textwrap模块。例如:

def truncate(text, max_size):
    if len(text) <= max_size:
        return text
    return textwrap.wrap(text, max_size-3)[0] + "..."

大于max_size的单词的默认行为是打断它们(使max_size成为一个硬限制)。通过将break_long_words=False传递给wrap(),您可以更改为其他一些解决方案使用的软限制,在这种情况下,它将返回整个单词。如果要此行为,请将最后一行更改为:

    lines = textwrap.wrap(text, max_size-3, break_long_words=False)
    return lines[0] + ("..." if len(lines)>1 else "")

根据您需要的具体行为,还有一些其他选项(如展开选项卡)可能会引起您的兴趣。

相关问题 更多 >