DevGang
Авторизоваться

Python: рецепты форматирования строк

Часто, когда возникает необходимость в форматировании строк, я забываю некоторые нюансы. В статье ниже рассмотрены всевозможные методы применения Python str.format() и его устаревшего аналога %.

Форматирование чисел

В следующей таблице показаны различные способы форматирования чисел с использованием функции str.format() в python, с примерами как для форматирования дробных, так и для целых чисел.

Для запуска примеров используйте print("FORMAT".format(NUMBER)) Таким образом, чтобы получить результат первого примера, вы должны запустить: print("{:. 2f}".format(3.1415926))

Число Формат Результат Примечание
3.1415926 {:.2f} 3.14 2 знака после запятой
3.1415926 {:+.2f} +3.14 2 знака после запятой со знаком
-1 {:+.2f} -1.00 2 знака после запятой со знаком
2.71828 {:.0f} 3 Без знаков после запятой
5 {:0>2d} 05 Заполнение нулями слева (2 знака)
5 {:x<4d} 5xxx Заполнение нулями справа (4 знака)
10 {:x<4d} 10xx Заполнение нулями справа (4 знака)
1000000 {:,} 1,000,000 Форматирование числа с разделителем запятой
0.25 {:.2%} 25.00% Форматирование процентов
1000000000 {:.2e} 1.00e+09 Обозначение экспоненты
13 {:10d} 13 Выровненный по правому краю (по умолчанию, ширина 10, пустое место заполняется пробельнами символами)
13 {:<10d} 13 Выровненный слева (ширина 10)
13 {:^10d} 13 Выровненный по центру (ширина 10)

Основы string.format()

Вот пара примеров базовой подстановки строк, вырожение {} является заполнителем для замещаемых переменных. Если формат не указан, он будет вставляться и форматироваться в виде строки.

s1 = "so much depends upon {}".format("a red wheel barrow")
s2 = "glazed with {} water beside the {} chickens".format("rain", "white")

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

s1 = " {0} is better than {1} ".format("emacs", "vim")
s2 = " {1} is better than {0} ".format("emacs", "vim")

Старый метод ворматирования строк черех %

До python 2.6 способ форматирования строк, как правило, был немного проще, хотя и ограничен количеством аргументов, которые он может получить. Эти методы по-прежнему работают с Python 3.3, но есть скрытые угрозы, которые полностью не одобряют их. [РЕР-3101]

Форматирование числа с плавающей запятой:

pi = 3.14159
print(" pi = %1.2f " % pi)

Множественные замещения

s1 = "cats"
s2 = "dogs"
s3 = " %s and %s living together" % (s1, s2)

Недостаточное количество аргументов аргументы

Используя метод более старого формата, я бы часто получал ошибку «TypeError: not enough arguments for format string», потому что я неправильно определил свою замену, сделайте что-то вроде следующего.

set = " (%s, %s, %s, %s, %s, %s, %s, %s) " % (a,b,c,d,e,f,g,h,i)

Новый форматировщик строк python вы можете использовать пронумерованные параметры, поэтому вам не нужно подсчитывать, сколько у вас есть, по крайней мере, на половине его.

set = " ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) ".format(a,b,c,d,e,f,g)

Больше примеров форматирования с функцией .format()

Функция format() предлагает множество дополнительных возможностей и возможностей, вот несколько полезных советов и трюков с использованием .format()

Именованные арргументы

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

madlib = " I {verb} the {object} off the {place} ".format(verb="took", object="cheese", place="table")
~~ I took the cheese off the table

Повторное использование одной переменной несколько раз

Используя %, требуется строгий порядок переменных, метод .format() позволяет поместить их в любом порядке, как мы видели выше, и также позволяет повторно их использовать.

str = "Oh {0}, {0}! wherefore art thou {0}?".format("Romeo")
~~ Oh Romeo, Romeo! wherefore art thou Romeo?

Преобразование значений в разные форматы

Вы можете использовать следующие буквы для преобразования числа в свои форматы, decimal, hex, octal, binary

print("{0:d} - {0:x} - {0:o} - {0:b} ".format(21))
~~ 21 - 15 - 25 - 10101

Используем format как функцию

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

## defining formats
email_f = "Your email address was {email}".format

## use elsewhere
print(email_f(email="bob@example.com"))

Экранирование фигурных скобок

Если вы хотите использовать фигурные скобки при использовании str.fromat(), просто продублируйте их.

print(" The {} set is often represented as {{0}}".format("empty"))
~~ The empty set is often represented as {0}

Источник

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу