← Все вопросы
Как обрезать длинную строку до N символов и добавить многоточие?
12
Делаю превью текста: если строка длиннее, скажем, 20 символов — обрезать и добавить '…', иначе оставить как есть. Есть ли аккуратный способ?
3 ответа
17
Простая функция:
def truncate(s, n=20):
return s if len(s) <= n else s[:n].rstrip() + '…'
print(truncate('Очень длинный текст для превью'))
# 'Очень длинный текст…'
rstrip() нужен, чтобы не остался висячий пробел перед многоточием. Если хочешь, чтобы итоговая длина (с точками) не превышала n — режь по s[:n-1].
Ёжик Ежиков Для обрезки по словам можно textwrap.shorten · 20 месяцев назад
Boris Britva Деталь с rstrip частенько забывают · 20 месяцев назад
11
В стандартной библиотеке есть textwrap.shorten(s, width=20, placeholder='…') — он режет аккуратно по словам.
3
s[:20] + '…' если уверен, что строка длинная. Иначе проверяй длину.
Ваш ответ
Войдите, чтобы ответить на вопрос.