Функция Python для ограничения длины строки до максимальной длины

Есть ли функция в Python, встроенная или в стандартной библиотеке, для ограничения строки до определенной длины, и если длина была превышена, добавьте три точки (...) после нее?

Например:

>>> hypothetical_cap_function("Hello, world! I'm a string", 10)
"Hello, ..."
>>> hypothetical_cap_function("Hello, world! I'm a string", 20)
"Hello, world! I'm..."
>>> hypothetical_cap_function("Hello, world! I'm a string", 50)
"Hello, world! I'm a string"

Ответ 1

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

Ответ 2

Вероятно, самый гибкий (не просто разрезающий) способ - создать обертку вокруг 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 ...']

Затем просто возьмите нужные элементы.