Как укоротить строку до 75 символов в Python?
Вот как это делается в JavaScript:
var data="saddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsaddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
var info = (data.length > 75) ? data.substring[0,75] + '..' : data;
len(data) > 77
учесть двойные точки (нет смысла урезать только последний символ только для замены его точкой).Еще короче
источник
Еще более лаконично:
Если оно меньше 75 символов, изменений не будет.
источник
Если вы используете Python 3.4+, вы можете использовать
textwrap.shorten
из стандартной библиотеки:источник
shorten()
усекает слова , а не отдельные символы. Я искал, но, похоже, нет способа настроитьshorten()
или создатьTextWrapper
экземпляр для обрезки отдельных символов, а не слов.Для решения Django (которое не было упомянуто в вопросе):
Взгляните на исходный код Truncator, чтобы оценить проблему: https://github.com/django/django/blob/master/django/utils/text.py#L66
По поводу усечения с Django: усечение Django HTML
источник
Вы можете использовать этот однострочник:
источник
[:n]
называется, чтобы я мог посмотреть это в документации?С регулярным выражением:
Длинные строки усекаются:
Более короткие строки никогда не усекаются:
Таким образом, вы также можете «вырезать» среднюю часть строки, что в некоторых случаях лучше:
источник
Этот метод не использует, если:
data[:75] + bool(data[75:]) * '..'
источник
источник
75
) в переменную, чтобы избежать несоответствий.limit = 75; info = data[:limit] + '..' * (len(data) > limit)
Еще одно решение. С,
True
иFalse
вы получите небольшой отзыв о тесте в конце.источник
Это только в:
источник
источник
На самом деле вы не можете "усечь" строку Python, как вы можете создать динамически размещаемую строку C. Строки в Python неизменны. Что вы можете сделать, это нарезать строку, как описано в других ответах, получив новую строку, содержащую только символы, определенные смещениями и шагом среза. В некоторых (непрактичных) случаях это может немного раздражать, например, когда вы выбираете Python в качестве языка интервью, и интервьюер просит вас удалить повторяющиеся символы из строки на месте. Doh.
источник
источник
Регулярное выражение не нужно, но вы хотите использовать форматирование строк, а не конкатенацию строк в принятом ответе.
Это, вероятно, самый канонический, Pythonic способ обрезать строку
data
до 75 символов.источник
saddddddd...
строка превращается111111...
:) Я знаю, что это опечатка, хотя я согласен с вами по поводу регулярных выражений.Вот функция, которую я сделал как часть нового класса String ... Она позволяет добавлять суффикс (если строка имеет размер после обрезки, а добавление достаточно длинное - хотя вам не нужно устанавливать абсолютный размер)
Я был в процессе изменения нескольких вещей вокруг, так что есть некоторые бесполезные логические затраты (например, _truncate ...), где это больше не нужно, и есть возврат наверху ...
Но это все еще хорошая функция для усечения данных ...
источник
источник