← Все вопросы

Как обрезать длинную строку до N символов и добавить многоточие?

Задан 20 месяцев назад662 просмотров3 ответа
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] + '…' если уверен, что строка длинная. Иначе проверяй длину.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект