Ответ 1
def cap(s, l):
return s if len(s)<=l else s[0:l-3]+'...'
Есть ли функция в 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"
def cap(s, l):
return s if len(s)<=l else s[0:l-3]+'...'
Вероятно, самый гибкий (не просто разрезающий) способ - создать обертку вокруг 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 ...']
Затем просто возьмите нужные элементы.