Подтвердить что ты не робот

Как усечь строку с помощью str.format в Python?

Как усечь строку, используя str.format в Python? Возможно ли это?

Существует параметр ширины, указанный в Мини-язык спецификации формата:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
...
width       ::=  integer
...

Но указание этого, по-видимому, работает только для заполнения, а не для усечения:

>>> '{:5}'.format('aaa')
'aaa  '
>>> '{:5}'.format('aaabbbccc')
'aaabbbccc'

Так что это больше минимальная ширина, чем ширина.

Я знаю, что могу перерезать строки в виде списков, но обрабатываемые здесь данные полностью динамичны, включая строку формата и аргументы, которые входят. Я не могу просто пойти и явно нарезать один.

4b9b3361

Ответ 1

Вместо этого используйте .precision:

>>> '{:.5}'.format('aaabbbccc')
'aaabb'

Согласно документации Format Specification Mini-Language:

точность - это десятичное число, указывающее, сколько цифр должно быть отображается после десятичной точки для форматированного значения с плавающей запятой с 'f' и 'F', или до и после десятичной точки для плавающего значение, отформатированное с помощью "g" или "G". Для не-числовых типов поле указывает максимальный размер поля - другими словами, сколько символов будет использоваться из содержимого поля. Точность не допускается для целочисленные значения.