Шаг 35.
Python: сборник рецептов.
Строки и текст. Выравнивание текстовых строк

    На этом шаге мы рассмотрим различные способы форматирования строк.

Задача

    Вам нужно отформатировать текст с применением некоего выравнивания.

Решение

    Для базового выравнивания строк можно использовать методы ljust(), rjust() и center(). Например:

>>> text = 'Hello World'
>>> text.ljust(20)
'Hello World         '
>>> text.rjust(20)
'         Hello World'
>>> text.center(20)
'    Hello World     '
>>> 

    Все эти методы могут принимать опциональный символ заполнения. Например:

>>> text.rjust(20,'=')
'=========Hello World'
>>> text.center(20,'*')
'****Hello World*****'
>>> 

    Функция format() также может быть использована для выравнивания. Вам нужно просто использовать символы <, > или ^ вместе с желаемой шириной. Например:

>>> format(text, '>20')
'         Hello World'
>>> format(text, '<20')
'Hello World         '
>>> format(text, '^20')
'    Hello World     '
>>> 

    Если вы хотите использовать в качестве заполняющего символа не пробел, определите его перед символом выравнивания:

>>> format(text, '=>20s')
'=========Hello World'
>>> format(text, '*^20s')
'****Hello World*****'
>>> 

    Эти коды форматирования могут быть также использованы с методом format() при обработке нескольких значений. Например:

>>> '{:>10s} {:>10s}'.format('Hello', 'World')
'     Hello      World'
>>> 

    У format() есть преимущество - он работает не только со строками. Он работает с любыми значениями, что делает его назначение очень широким. Например, вы можете использовать его с числами:

>>> x = 1.2345
>>> format(x, '>10')
'    1.2345'
>>> format(x, '^10.2f')
'   1.23   '
>>> 


Обсуждение

    В старых программах вы также можете увидеть, как для форматирования текста использовался оператор %. Например:

>>> '%-20s' % text
'Hello World         '
>>> '%20s' % text
'         Hello World'
>>>

    Однако в новых программах вы должны предпочитать функцию или метод format(). Она намного мощнее оператора %. Более того, format() может применяться более широко, нежели строковые методы ljust(), rjust() или center(), поскольку работает с любыми объектами.

    За полным списком возможностей функции format() обратитесь к документации Python https://docs.python.org/3/library/string.html#formatspec.

    На следующем шаге мы рассмотрим объединение и конкатенацию строк.




Предыдущий шаг Содержание Следующий шаг