Python函数用于将字符串截断为最大长度

11

在Python中,是否有内置函数或标准库可将字符串限制为特定长度,并在超过该长度时在其后添加三个点(...)?

例如:

>>> hypothetical_cap_function("你好,世界!我是一个字符串", 10)
"你好,..."
>>> hypothetical_cap_function("你好,世界!我是一个字符串", 20)
"你好,世界!我是一..."
>>> hypothetical_cap_function("你好,世界!我是一个字符串", 50)
"你好,世界!我是一个字符串"
2个回答

20
def cap(s, l):
    return s if len(s)<=l else s[0:l-3]+'...'

我理解为它不在标准库中。感谢提供该函数 :) - Hubro

1
可能是最灵活的(除了切片之外)方法是创建一个包装器,围绕textwrap.wrap这样做:(请记住,它在某些地方尝试智能拆分,可能无法得到完全符合您要求的结果 - 但这是一个很方便的模块需要了解)
def mywrap(string, length, fill=' ...'):
    from textwrap import wrap
    return [s + fill for s in wrap(string, length - len(fill))]

s = "Hello, world! I'm a string"
print mywrap(s, 10)
# ['Hello, ...', 'world! ...', "I'm a ...", 'string ...']

然后只需获取您需要的元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接