2024-05-23 16:44:10 发布
网友
我正在寻找一种在Python中截断字符串的方法,这种方法不会在单词中间截断字符串。
例如:
Original: "This is really awesome." "Dumb" truncate: "This is real..." "Smart" truncate: "This is really..."
我在寻找一种方法来完成从上面“聪明”截取。
有一些可能对您有问题,也可能没有问题,例如处理制表符(例如,如果您将制表符显示为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 "")
根据您需要的具体行为,还有一些其他选项(如展开选项卡)可能会引起您的兴趣。
有一些可能对您有问题,也可能没有问题,例如处理制表符(例如,如果您将制表符显示为8个空格,但在内部将其视为1个字符)、处理各种类型的断开和不断开空白,或者允许断开连字符等等(如果需要的话),您可能想看看textwrap模块。例如:
大于max_size的单词的默认行为是打断它们(使max_size成为一个硬限制)。通过将break_long_words=False传递给wrap(),您可以更改为其他一些解决方案使用的软限制,在这种情况下,它将返回整个单词。如果要此行为,请将最后一行更改为:
根据您需要的具体行为,还有一些其他选项(如展开选项卡)可能会引起您的兴趣。
相关问题 更多 >
编程相关推荐