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'

 


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