Форматування рядків¶
При роботі з рядками часто виникають ситуації, коли в шаблон рядка треба підставити різні дані.
Це можна робити об'єднуючи частини рядка і дані, але в Python є більш зручний спосіб - форматування рядків.
Форматування рядків може допомогти, наприклад, у таких ситуаціях:
- необхідно підставити значення в рядок за певним шаблоном
- необхідно відформатувати вивід стовпцями
- треба конвертувати числа у двійковий формат
Існує кілька варіантів форматування рядків:
- з оператором
%
- старіший варіант - метод
format
- відносно новий варіант - f-рядки – новий варіант, який з'явився у Python 3.6
Так як для повноцінного пояснення f-рядків, треба показувати приклади з циклами та роботою з об'єктами, які ще не розглядалися, ця тема розглядається у розділі FIX REF
Форматування рядків із методом format¶
Приклад використання методу format:
Спеціальний символ {}
вказує на те, що сюди підставиться значення, яке
передається методу format. При цьому кожна пара фігурних дужок позначає одне
місце для підстановки значення.
Значення, що підставляються у фігурні дужки, можуть бути різного типу. Наприклад, це може бути рядок, число або список:
In [3]: print('{}'.format('10.1.1.1'))
10.1.1.1
In [4]: print('{}'.format(100))
100
In [5]: print('{}'.format([10, 1, 1, 1]))
[10, 1, 1, 1]
За допомогою форматування рядків можна виводити результат стовпцями. У форматуванні рядків можна вказувати, скільки символів виділено на дані. Якщо кількість символів у даних менша, ніж виділена кількість символів, відсутні символи заповнюються пробілами.
Наприклад, таким чином можна вивести дані стовпцями однакової ширини по 15 символів з вирівнюванням праворуч:
In [3]: vlan, mac, intf = ['100', 'aabb.cc80.7000', 'Gi0/1']
In [4]: print("{:>15} {:>15} {:>15}".format(vlan, mac, intf))
100 aabb.cc80.7000 Gi0/1
Вирівнювання по лівій стороні:
Приклади вирівнювання
Шаблон може бути багаторядковим:
ip_template = '''
IP address:
{}
'''
In [7]: print(ip_template.format('10.1.1.1'))
IP address:
10.1.1.1
За допомогою форматування рядків можна також впливати на відображення чисел.
Наприклад, можна вказати, скільки цифр після коми виводити:
За допомогою форматування рядків можна конвертувати числа у двійковий формат:
При цьому, як і раніше, можна вказувати додаткові параметри, наприклад, ширину стовпця:
А також можна вказати, що треба доповнити числа нулями до вказаної ширини стовпця:
In [13]: '{:08b} {:08b} {:08b} {:08b}'.format(192, 100, 1, 1)
Out[13]: '11000000 01100100 00000001 00000001'
У фігурних дужках можна вказувати імена. Це дозволяє передавати аргументи в будь-якому порядку, а також робить шаблон зрозумілішим:
Ще одна корисна можливість форматування рядків – зазначення номера аргументу:
За рахунок цього, наприклад, можна позбутися повторної передачі одних і тих же значень:
ip_template = '''
IP address:
{:<8} {:<8} {:<8} {:<8}
{:08b} {:08b} {:08b} {:08b}
'''
In [20]: print(ip_template.format(192, 100, 1, 1, 192, 100, 1, 1))
IP address:
192 100 1 1
11000000 01100100 00000001 00000001
У прикладі вище октети адреси доводиться передавати двічі - один відображення у десятковому форматі, а другий - для двійкового.
Вказавши індекси значень, які передаються методу format, можна позбутися дублювання: