Форматирование

Поділитись

Метод format(), который определен у строк, позволяет форматировать строку, вставляя в нее на место плейсхолдеров определенные значения.

Для вставки в строку используются специальные параметры, которые обрамляются фигурными скобками ({}).

Именованные параметры

В форматируемой строке мы можем определять параметры, в методе format() передавать для этих параметров значения:

1
2
3
4
5
text = "Hello, {first_name}.".format(first_name="Tom")
print(text)  
   # Hello, Tom. info = "Name: {name}\t Age: {age}".format(name="Bob", age=23)
print(info)    
# Name: Bob  Age: 23

Причем в метод формат аргументы определяются с тем же именем, что и параметры в строке. Так, если параметр называется first_name, как в первом случае, то аргумент, которому присваивается значение, также называется first_name.

Параметры по позиции

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

1
2
info = "Name: {0}\t Age: {1}".format("Bob", 23)
print(info)     # Name: Bob  Age: 23

При этом аргументы можно вставлять в строку множество раз:

1text = "Hello, {0} {0} {0}.".format("Tom")

Подстановки

Еще один способ передачи форматируемых значений в строку представляет использование подстановок или специальных плейсхолдеров, на место которых вставляются определенные значения. Для форматирования мы можем использовать следующие плейсхолдеры:

  • s: для вставки строк
  • d: для вставки целых чисел
  • f: для вставки дробных чисел. Для этого типа также можно определить через точку количество знаков в дробной части.
  • %: умножает значение на 100 и добавляет знак процента
  • e: выводит число в экспоненциальной записи

Общий синтаксис плейсхолдера следующий:

1{:плейсхолдер}

В зависимости от плейсхолдера можно добавлять дополнительные параметры. Например, для форматирования чисел float можно использовать следующие параметры

1{:[количество_символов][запятая][.число_знаков_в_дробной_части] плейсхолдер}

При вызове метода format в него в качестве аргументов передаются значения, которые вставляются на место плейсхолдеров:

1
2
3
4
welcome = "Hello {:s}"name = "Tom"
formatted_welcome = welcome.format(name)
print(formatted_welcome)    
    # Hello Tom

В качестве результата метод format() возвращает новую отформатированную строку.

Форматирование целых чисел:

1
2
3
4
source = "{:d} символов"
number = 5
target = source.format(number)
print(target)   # 5 символов

Если форматируемое число больше 999, то мы можем указать в определении плейсхолдера, что мы хотим использовать запятую в качестве разделителя разрядов:

1
2
source = "{:,d} символов"
print(source.format(5000))   # 5,000 символов

Для дробных чисел, то есть таких, которые представляют тип float, перед кодом плейсхолдера после точки можно указать, сколько знаков в дробной части мы хотим вывести:

1
2
3
4
5
number = 23.8589578
print("{:.2f}".format(number))   # 23.86
print("{:.3f}".format(number))   # 23.859
print("{:.4f}".format(number))   # 23.8590
print("{:,.2f}".format(10001.23554))    # 10,001.24

Еще один параметр позволяет установить минимальную ширину форматируемого значения в символах:

12print("{:10.2f}".format(23.8589578))    #     23.86
print("{:8d}".format(25))               #      25

Для вывода процентов лучше воспользоваться кодом “%”:

1
2
3
4
number = .12345
print("{:%}".format(number))        # 12.345000%
print("{:.0%}".format(number))      # 12%
print("{:.1%}".format(number))      # 12.3%

Для вывода числа в экспоненциальной записи применяется плейсхолдер “e”:

1
2
3
4
number = 12345.6789
print("{:e}".format(number))        # 1.234568e+04
print("{:.0e}".format(number))      # 1e+04
print("{:.1e}".format(number))      # 1.2e+04

Форматирование без метода format

В принципе для форматирования значений мы можем обойтись и без метода format, применяя следующий синтаксис:

1строка%(параметр1, параметр2,..параметрN)

То есть в начале идет строка, которая содержит те же плейсхолдеры, которые были рассмотрены выше (за исключением плейсхолдера %), после строки ставится знак процента %, а затем список значений, которые вставляются в строку. Фактически знак процента представляют операцию, в результате которой образуется новая строка:

1
2
info = "Имя: %s \t Возраст: %d" % ("Tom", 35)
print(info)   # Имя: Tom     Возраст: 35

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

Причем способы форматирования чисел здесь также применяются:

1
2
number = 23.8589578
print("%0.2f  - %e" % (number, number))   # 23.86  - 2.385896e+01


Поділитись