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!

 


Споріднені теми