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

Операции форматирования строк. Выражения форматирования строк. Бинарный оператор %


Содержание


Поиск на других ресурсах:

1. Операции форматирования строк. Назначение

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

  • с помощью выражений форматирования строк. Эти выражения базируются на модели функции printf() языка C;
  • с помощью метода format().

 

2. Выражения форматирования строк. Правила создания. Бинарный оператор %

Выражения форматирования строк используют модель функции printf() языка C. Чтобы создать выражение форматирования строки используется бинарный оператор %.

В наиболее общем случае выражение форматирования строки имеет вид:

format_string % (list_of_objects)

здесь

  • format_string – строка форматирования;
  • list_of_objects – список объектов.

Строка форматирования format_string может содержать:

  • символы строки, которые не воспринимаются как спецификаторы формата. Такие символы представляются в том виде, в котором они есть;
  • специальные символы или спецификаторы формата, перед которыми следует символ %. Иными словами, если в форматированной строке встречается символ %, то один или несколько символов следующих за ним воспринимаются как спецификаторы формата. Например: «%s», «%.2f».

Синтаксис использования спецификатора формата выглядит следующим образом:

%[(name)][flags][width][.precision]code

здесь

  • name — ключ в словаре. Это случай, когда происходит форматирование строк из словаря;
  • flags — перечень флажков. С помощью флажков можно задавать, например, выравнивание, наличие начальных нулей (0) и тому подобное;
  • width — общая ширина поля для представления строки;
  • .precision — количество знаков после десятичной запятой;
  • code — символ спецификатора формата (смотрите таблицу ниже). Он определяет каким образом представлять данные из перечня list_of_objects.

Символ спецификатора формата может получать следующие значения:

  • s — вывод строки. Здесь используется функция str(x), где x — объект из списка list_of_objects. Более подробно о работе функции str() можно прочитать здесь;
  • r — так же как s, но используется функция repr(x). Работа функции repr() подробно описывается здесь;
  • c — одиночный символ;
  • d — десятичное целое число;
  • i — целое число;
  • u — то же, что и d;
  • o — восьмеричное целое число;
  • x — шестнадцатеричное целое число;
  • X — то же, что и x, но шестнадцатеричные цифры возвращаются в верхнем регистре;
  • e — вещественное число в экспоненциальной форме;
  • E — то же, что и e. В этом случае алфавитные символы возвращаются в верхнем регистре;
  • f, F — вещественное число в десятичном представлении;
  • g, G — вещественное число e, E или f;
  • % — символ %.

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

%.3f

здесь

  • .3 – указание того, что выводится 3 знака после запятой;
  • f – указание того, что выводится вещественное число в десятичном представлении.

 

3. Примеры форматирования целочисленных значений

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

# Выражения форматирования строк

# Форматирование целочисленных значений
# 1. Задано целое число
num = 234

# 2. Получить различные виды форматированных строк
# 2.1. Представить число 234 как есть
s1 = 'num=%d' % (num) # 234
print(s1)

# 2.2. Представить число с шириной вывода 10 знаков
s2 = 'num=%10d' % (num) # num= 234
print(s2)

# 2.3. Представить число 234 в 16-й системе исчисления
s3 = 'num=%x' % (num) # num=ea
print(s3)
s4 = 'num=%X' % (num) # num=EA
print(s4)

# 2.4. Представить число 234 в 8-й системе исчисления
s5 = 'num=%o' % (num) # num=352
print(s5)

# 3. Представить 2 числа с заданной шириной вывода
a = -1702
b = 8833
s6 = '(a,b)=>%10d - %10d' % (a, b) # (a,b)=> -1702 - 8833
print(s6)

Результат выполнения программы

num=234
num= 234
num=ea
num=EA
num=352
(a,b)=> -1702 - 8833

 

4. Пример, демонстрирующий форматирование чисел с плавающей запятой
# Выражения форматирования строк

# Форматирование вещественных значений
# 1. Задано число с плавающей запятой
num = 234.7298027

# 2. Получить разные виды форматированных строк
# 2.1. Представить число num как целое
s1 = 'num=%i' % (num) # num=234
print(s1)

# 2.2. Представить число с точностью 2 знака после запятой
s2 = 'num=%.2f' % (num) # num=234.73
print(s2)
s2 = 'num=%0.2F' % (num) # num=234.73
print(s2)

# 2.3. Представить число с точностью 4 знака после запятой
# и шириной вывода 12 знаков
s3 = 'num=%12.4f' % (num) # num= 234.7298
print(s3)

# 2.4. Представить число в экспоненциальной форме
s4 = 'num=%e' % (num) # num=2.347298e+02
print(s4)
s5 = 'num=%E' % (num) # num=2.347298E+02
print(s5)

# 2.5. Представить число в экспоненциальной форме с
# точностью 3 знака после запятой и шириной вывода 15 знаков
s6 = 'num=%15.3e' % (num) # num= 2.347e+02
print(s6)

# 2.6. Представить число в формате e или f
s7 = 'num=%g' % (num) # num=234.73
print(s7)

num2 = 1.234567E-03
s8 = 'num2=%G' % (num2) # num2=0.00123457
print(s8)

Результат выполнения программы

num=234
num=234.73
num=234.73
num= 234.7298
num=2.347298e+02
num=2.347298E+02
num= 2.347e+02
num=234.73
num2=0.00123457

 

5. Пример, демонстрирующий форматирование строк и одиночных символов

В примере демонстрируется использование спецификаторов формата r, s, c при образовании выражений форматирования строк.

# Выражения форматирования строк

# Форматирование строк
# 1. Спецификатор формата s - использует функцию str()
# 1.1. Конвертировать целое число d в строку
s1 = 'str1=%s' % (235) # 'str1=235'
print(s1)
s2 = 'str2=%12s' % (1885) # 'str2= 1885'
print(s2)
s3 = '%-10s.' % (234) # '234 .'
print(s3)

# 1.2. Конвертировать вещественное число в строку
s4 = 'str4=%s' % (-82.78234) # 'str4=-82.78234'
print(s4)
s5 = 'str5=%10s' % (-12.345) # 'str5= -12.345'
print(s5)

# 2. Спецификатор формата r - использует функцию repr()
s6 = 'str6=%r' % (777) # 'str6=777'
print(s6)
s7 = 'str7=%10r' % (1.23) # 'str7= 1.23'
print(s7)
s8 = 'str8=%r' % ('Hello!') # "str8='Hello!'"
print(s8)

# 3. Конвертирование одиночных символов - спецификатор формата c
symbol = '+'
s9 = 'str9=%c' % (symbol) # 'str9=+'
print(s9)

# 4. Формирование строки на основе нескольких спецификаторов
s10 = '%s%c%s' % ('bestprog', '.', 'net') # 'bestprog.net'
print(s10)

s11 = '%-10s%s' % ('Hello', 'world!') # 'Hello world!'
print(s11)

Результат выполнения программы

str1=235
str2= 1885
234 .
str4=-82.78234
str5= -12.345
str6=777
str7= 1.23
str8='Hello!'
str9=+
bestprog.net
Hello world!

 


Связанные темы