Python. Стилі форматування. Функції обробки рядка згідно з форматом чи правилом кодування




Стилі форматування. Функції обробки рядка згідно з форматом чи правилом кодування


Зміст


Пошук на інших ресурсах:

1. Стилі форматування рядків у Python

У мові Python при роботі з рядками підтримуються два стилі форматування рядків:

  • стиль str.format(). Цей стиль забезпечує більше можливостей форматування рядків та їх налаштування а також користувацьке форматування синтаксису рядка;
  • стиль, який базується на використанні бібліотечної функції printf() мови програмування C. Цей стиль обробляє менший діапазон типів, однак, для багатьох випадків забезпечує більшу швидкість виконання.

 

2. Функція str.encode(). Повернути закодовану версію рядка

Функція encode() повертає закодовану версію рядка як обўєкт байтів. Загальна форма виклику функції encode() наступна:

s2 = s1.encode(encoding = "utf-8", errors = "strict")

де

  • s2 – рядок-результат, який є обўєктом байтів;
  • s1 – рядок що обробляється;
  • encoding – встановлене кодування. За замовчуванням встановлюється кодування utf-8;
  • errors – параметр, який задає схему керування помилками. Значення errors може бути встановлене як ‘strict’ або ‘ignore’.

Приклад.

# Функція encode()
s1 = "abc def ghi"

# способи виклику функції encode()
s2 = str.encode(s1) # s2 = 'abc def ghi'
s3 = s1.encode() # s3 = 'abc def ghi'

# встановити кодування 'utf-8' та схему яка ігнорує помилки
s2 = s1.encode(errors='ignore')


 

3. Функція str.expandtabs(). Повернути копію рядка з заміною символів табуляції на символ пробіл

Функція expandtabs() повертає копію рядка, в якій усі символи табуляції замінено символами пробіл.
Згідно документації Python загальна форма використання функції наступна

s_copy = s.expandtabs(tabs = 8)

де

  • s – рядок-оригінал, який обробляється;
  • s_copy – результуючий рядок, який є копією рядка s з внесеними змінами;
  • tabs – параметр, який визначає крок зміни позицій табуляцї. За замовчуванням значення tabs = 8.

Алгоритм роботи функції наступний. Щоб сформувати новий рядок s_copy, спочатку поточний індекс цього рядка встановлюється рівним нулю. Перегляд рядка s відбувається посимвольно. Символи, які не є символом табуляції ‘\t’ додаються до рядка s_copy як є. При додаванні кожного символу з рядка s змінюється значення поточного індексу рядка s_copy. Якщо у рядку s зустрічається символ табуляції, то до рядка s_copy додається один або декілька пробілів до тих пір, поки значення поточного індексу не стане рівним наступній позиції табуляції. При цьому сам символ табуляції ‘\t’ не копіюється. Крок зміни позицій табуляції задається у параметрі tabs.

Якщо символ рядка s є символом нового рядка ‘\n’ або символом повернення каретки ‘\r’, то він копіюється і поточний стовпчик скидується в нуль.

Фактично, у результуючому рядку s_copy текст, що розміщується між символами ‘\t’ рядка s, починається з фіксованих позицій. Крок зміни цих позицій заданий у параметрі tabs. Наприклад, якщо значення tabs=6, то формуються наступні позиції (індекси початку) виведення тексту в рядку s_copy: 0, 6, 12, 18, …

Приклад.

# Функція str.expandtabs() - обробка рядка табуляціями

# Рядок-оригінал
s = '012\t3456\t789'

# встановити ширину 8 символів - за замовчуванням
s2 = s.expandtabs() # s2 = '012 3456 789'

# встановити ширину виведення 5 символів
s2 = s.expandtabs(5) # s2 = '012 3456 789'

# встановити ширину виведення 4 символи
s2 = s.expandtabs(4) # s2 = '012 3456 789'

# встановити ширину виведення 3 символи
s2 = s.expandtabs(3) # s2 = '012 3456 789'

# встановити ширину виведення 1 символ
s2 = s.expandtabs(1) # s2 = '012 3456 789'

 

4. Функція str.format(). Форматування рядка

Функція str.format() виконує операцію форматування рядка. Рядок обробляється згідно з форматом. У форматі рядка вказується:

  • текст з символів. Цей текст виводиться як є;
  • поля заміщення, розділені фігурними дужками { }. Ці поля розглядаються функцією особливим чином. Кожне поле може бути заміщене числовим індексом позиційного аргументу або іменем ключового аргументу.

Функція повертає копію рядка, в якому кожне поле заміщення замінене рядковим значенням відповідного аргументу.

Приклад.

# Функція str.format() - операція форматування рядка

# Позиції аргументів слідують підряд: {0}, {1}, {2}
a = 5
b = 7
s = '{0} + {1} = {2}'.format(a, b, a+b) # s = '5 + 7 = 12'

# Позиції аргументів слідують змішаним чином: {0}, {2}, {1}
x = 3.8
y = -1.9
s = '{0} ** {2} = {1}'.format(x, x**y, y)
# s = '3.8 ** -1.9 = 0.07914275540467842'

d = -388
s = 'd = {0}'.format(d) # s = 'd = -388'

 


Зв’язані теми