Как усечь строку с помощью 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'
Так что это больше минимальная ширина, чем ширина.
Я знаю, что могу перерезать строки в виде списков, но обрабатываемые здесь данные полностью динамичны, включая строку формата и аргументы, которые входят. Я не могу просто пойти и явно нарезать один.
Ответы
Ответ 1
Вместо этого используйте .precision
:
>>> '{:.5}'.format('aaabbbccc')
'aaabb'
Согласно документации Format Specification Mini-Language
:
точность - это десятичное число, указывающее, сколько цифр должно быть отображается после десятичной точки для форматированного значения с плавающей запятой с 'f' и 'F', или до и после десятичной точки для плавающего значение, отформатированное с помощью "g" или "G". Для не-числовых типов поле указывает максимальный размер поля - другими словами, сколько символов будет использоваться из содержимого поля. Точность не допускается для целочисленные значения.