Метод шаблонов

Регулярные выражения в Python

Maria Eugenia Inzaugarat

Data Scientist

Строки-шаблоны

  • Более простой синтаксис
  • Медленнее f-строк
  • Ограничены: не поддерживают спецификаторы формата
  • Удобны при работе со строками из внешних источников
Регулярные выражения в Python

Базовый синтаксис

from string import Template

my_string = Template('Data science has been called $identifier')
my_string.substitute(identifier="sexiest job of the 21st century")
'Data science has been called sexiest job of the 21st century'
Регулярные выражения в Python

Подстановка

  • Несколько $identifier
  • Использование переменных
from string import Template
job = "Data science"
name = "sexiest job of the 21st century"

my_string = Template('$title has been called $description')
my_string.substitute(title=job, description=name)
'Data science has been called sexiest job of the 21st century'
Регулярные выражения в Python

Подстановка

  • Используйте ${identifier}, если за идентификатором следуют допустимые символы

 

my_string = Template('I find Python very ${noun}ing but my sister has lost $noun')

my_string.substitute(noun="interest")
'I find Python very interesting but my sister has lost interest'
Регулярные выражения в Python

Подстановка

  • Используйте $$ для экранирования знака доллара

 

my_string = Template('I paid for the Python course only $$ $price, amazing!')

my_string.substitute(price="12.50")
'I paid for the Python course only $ 12.50, amazing!'
Регулярные выражения в Python

Подстановка

  • Выбрасывает ошибку, если заполнитель отсутствует
favorite = dict(flavor="chocolate")

my_string = Template('I love $flavor $cake very much')
my_string.substitute(favorite)
Traceback (most recent call last):
KeyError: 'cake'
Регулярные выражения в Python

Подстановка

favorite = dict(flavor="chocolate")
my_string = Template('I love $flavor $cake very much')
try:
    my_string.substitute(favorite) 
except KeyError:
      print("missing information")
missing information
Регулярные выражения в Python

Безопасная подстановка

  • Всегда возвращает пригодную строку
  • Отсутствующие заполнители остаются в итоговой строке
favorite = dict(flavor="chocolate")
my_string = Template('I love $flavor $cake very much')

my_string.safe_substitute(favorite)
'I love chocolate $cake very much'
Регулярные выражения в Python

Что выбрать?

  • str.format():

    • Хорошая отправная точка. Концепции применимы и к f-строкам.
    • Совместим со всеми версиями Python.
  • f-строки:

    • Предпочтительный метод из всех.
    • Подходит только для современных версий Python (3.6+).
  • Строки-шаблоны:

    • При работе с внешними строками или строками от пользователя
Регулярные выражения в Python

Давайте потренируемся!

Регулярные выражения в Python

Preparing Video For Download...