string.md
1> **Источник:** https://python-all.ru/3.0/library/string.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `string` – Общие операции со строками89Модуль `string` содержит ряд полезных констант и классов, а также несколько устаревших функций, которые также доступны в виде методов строк. Кроме того, встроенные строковые классы Python поддерживают методы последовательностей, описанные в разделе [*Типы последовательностей – str, bytes, bytearray, list, tuple, range*](https://python-all.ru/3.0/library/stdtypes.html#typesseq), а также строковые методы, описанные в разделе [*Строковые методы*](https://python-all.ru/3.0/library/stdtypes.html#string-methods). Для форматирования строк обратитесь к разделу [*Форматирование строк*](https://python-all.ru/3.0/library/string.html#string-formatting). Кроме того, для строковых функций на основе регулярных выражений смотрите модуль [`re`](https://python-all.ru/3.0/library/re.html#module-re).1011## Константы строк1213Константы, определённые в этом модуле:1415#### `[string.ascii_letters]string.ascii_letters`1617Конкатенация констант1819[`ascii_lowercase`](https://python-all.ru/3.0/library/string.html#string.ascii_lowercase)2021и2223[`ascii_uppercase`](https://python-all.ru/3.0/library/string.html#string.ascii_uppercase)2425, описанных ниже. Это значение не зависит от локали.2627#### `[string.ascii_lowercase]string.ascii_lowercase`2829Строчные буквы3031`'abcdefghijklmnopqrstuvwxyz'`3233. Это значение не зависит от локали и не изменится.3435#### `[string.ascii_uppercase]string.ascii_uppercase`3637Прописные буквы3839`'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`4041. Это значение не зависит от локали и не изменится.4243#### `[string.digits]string.digits`4445Строка4647`'0123456789'`4849.5051#### `[string.hexdigits]string.hexdigits`5253Строка5455`'0123456789abcdefABCDEF'`5657.5859#### `[string.octdigits]string.octdigits`6061Строка6263`'01234567'`6465.6667#### `[string.punctuation]string.punctuation`6869Строка символов ASCII, которые считаются знаками препинания в локали7071`C`7273.7475#### `[string.printable]string.printable`7677Строка символов ASCII, которые считаются печатными. Это комбинация7879[`digits`](https://python-all.ru/3.0/library/string.html#string.digits)8081,8283[`ascii_letters`](https://python-all.ru/3.0/library/string.html#string.ascii_letters)8485,8687[`punctuation`](https://python-all.ru/3.0/library/string.html#string.punctuation)8889и9091[`whitespace`](https://python-all.ru/3.0/library/string.html#string.whitespace)9293.9495#### `[string.whitespace]string.whitespace`9697Строка, содержащая все ASCII-символы, которые считаются пробельными. Включает символы: пробел, табуляция, перевод строки, возврат каретки, прогон страницы и вертикальная табуляция.9899## Форматирование строк100101Встроенный строковый класс предоставляет возможность выполнять сложные подстановки переменных и форматирование значений с помощью метода [`format()`](https://python-all.ru/3.0/library/functions.html#format), описанного в [**PEP 3101**](https://python-all.ru/3.0/library/string.html). Класс [`Formatter`](https://python-all.ru/3.0/library/string.html#string.Formatter) в модуле `string` позволяет создавать и настраивать собственное поведение форматирования строк, используя ту же реализацию, что и встроенный метод [`format()`](https://python-all.ru/3.0/library/functions.html#format).102103#### `[string.Formatter]class string.Formatter`104105Класс [`Formatter`](https://python-all.ru/3.0/library/string.html#string.Formatter) имеет следующие открытые методы:106107#### `[string.Formatter.format]format(format_string, *args, *kwargs)`108109[`format()`](https://python-all.ru/3.0/library/functions.html#format)110111– это основной метод API. Он принимает шаблон форматирования строку и произвольный набор позиционных и именованных аргументов.112113[`format()`](https://python-all.ru/3.0/library/functions.html#format)114115– это обёртка, которая вызывает116117[`vformat()`](https://python-all.ru/3.0/library/string.html#string.Formatter.vformat)118119.120121#### `[string.Formatter.vformat]vformat(format_string, args, kwargs)`122123Эта функция выполняет фактическую работу по форматированию. Она вынесена как отдельная функция для случаев, когда нужно передать заранее определённый словарь аргументов, а не распаковывать и упаковывать словарь как отдельные аргументы с помощью синтаксиса124125`*args`126127и128129`**kwds`130131.132133[`vformat()`](https://python-all.ru/3.0/library/string.html#string.Formatter.vformat)134135выполняет разбиение шаблонной строки форматирования на символьные данные и поля замены. Она вызывает различные методы, описанные ниже.136137Кроме того, класс [`Formatter`](https://python-all.ru/3.0/library/string.html#string.Formatter) определяет ряд методов, предназначенных для замены в подклассах:138139#### `[string.Formatter.parse]parse(format_string)`140141Перебирает format\_string и возвращает итератор кортежей (*literal\_text*, *field\_name*, *format\_spec*, *conversion*). Используется [`vformat()`](https://python-all.ru/3.0/library/string.html#string.Formatter.vformat) для разбиения строки на обычный текст или поля замены.142143Значения кортежа концептуально представляют собой отрезок литерального текста, после которого следует одно поле подстановки. Если литерального текста нет (это может произойти, если два поля подстановки следуют подряд), то *literal\_text* будет строкой нулевой длины. Если поле подстановки отсутствует, то значения *field\_name*, *format\_spec* и *conversion* будут равны `None`.144145#### `[string.Formatter.get_field]get_field(field_name, args, kwargs)`146147При заданном148149*field\_name*150151, возвращаемом152153[`parse()`](https://python-all.ru/3.0/library/string.html#string.Formatter.parse)154155(см. выше), преобразует его в объект для форматирования. Возвращает кортеж (obj, used\_key). Версия по умолчанию принимает строки формы, определённой в156157[**PEP 3101**](https://python-all.ru/3.0/library/string.html)158159, например "0\[name\]" или "label.title".160161*args*162163и164165*kwargs*166167передаются в168169[`vformat()`](https://python-all.ru/3.0/library/string.html#string.Formatter.vformat)170171. Возвращаемое значение172173*used\_key*174175имеет тот же смысл, что и параметр176177*key*178179для180181[`get_value()`](https://python-all.ru/3.0/library/string.html#string.Formatter.get_value)182183.184185#### `[string.Formatter.get_value]get_value(key, args, kwargs)`186187Извлекает значение заданного поля. Аргумент *key* может быть целым числом или строкой. Если это целое число, оно представляет индекс позиционного аргумента в *args*; если строка – именованный аргумент в *kwargs*.188189Параметр *args* содержит список позиционных аргументов для [`vformat()`](https://python-all.ru/3.0/library/string.html#string.Formatter.vformat), а параметр *kwargs* – словарь именованных аргументов.190191Для составных имён полей эти функции вызываются только для первого компонента имени поля; последующие компоненты обрабатываются через обычные операции с атрибутами и индексацией.192193Так, например, для поля с выражением ‘0.name’ будет вызвана [`get_value()`](https://python-all.ru/3.0/library/string.html#string.Formatter.get_value) с аргументом *key*, равным 0. Затем атрибут `name` будет получен после возврата [`get_value()`](https://python-all.ru/3.0/library/string.html#string.Formatter.get_value) вызовом встроенной функции [`getattr()`](https://python-all.ru/3.0/library/functions.html#getattr).194195Если индекс или ключевое слово ссылаются на несуществующий элемент, то должно быть возбуждено исключение [`IndexError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.IndexError) или [`KeyError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.KeyError).196197#### `[string.Formatter.check_unused_args]check_unused_args(used_args, args, kwargs)`198199Реализует проверку на неиспользованные аргументы, если это необходимо. Аргументами этой функции являются множество всех ключей аргументов, которые фактически упоминались в форматной строке (целые числа для позиционных аргументов и строки для именованных аргументов), а также ссылка на200201*args*202203и204205*kwargs*206207, переданные в vformat. Множество неиспользованных аргументов можно вычислить из этих параметров. Предполагается, что208209[`check_unused_args()`](https://python-all.ru/3.0/library/string.html#string.Formatter.check_unused_args)210211выбрасывает исключение, если проверка не проходит.212213#### `[string.Formatter.format_field]format_field(value, format_spec)`214215[`format_field()`](https://python-all.ru/3.0/library/string.html#string.Formatter.format_field)216217просто вызывает встроенную функцию218219[`format()`](https://python-all.ru/3.0/library/functions.html#format)220221. Этот метод предусмотрен, чтобы подклассы могли его переопределить.222223#### `[string.Formatter.convert_field]convert_field(value, conversion)`224225Преобразует значение (возвращённое226227[`get_field()`](https://python-all.ru/3.0/library/string.html#string.Formatter.get_field)228229) по заданному типу преобразования (как в кортеже, возвращаемом методом230231[`parse()`](https://python-all.ru/3.0/library/string.html#string.Formatter.parse)232233). Базовая версия понимает типы преобразования ‘r’ (repr) и ‘s’ (str).234235## Синтаксис строки формата236237Метод [`str.format()`](https://python-all.ru/3.0/library/stdtypes.html#str.format) и класс [`Formatter`](https://python-all.ru/3.0/library/string.html#string.Formatter) используют одинаковый синтаксис форматных строк (хотя в случае [`Formatter`](https://python-all.ru/3.0/library/string.html#string.Formatter) подклассы могут определять собственный синтаксис форматных строк).238239Строки форматирования содержат «поля замены», заключённые в фигурные скобки `{}`. Всё, что не находится в скобках, считается буквальным текстом и копируется в вывод без изменений. Если нужно включить символ скобки в буквальный текст, его можно экранировать удвоением: `{{` и `}}`.240241Грамматика поля замены выглядит следующим образом:242243> ```244>245> replacement_field ::= "{" field_name ["!" conversion] [":" format_spec] "}"246> field_name ::= (identifier | integer) ("." attribute_name | "[" element_index "]")*247> attribute_name ::= identifier248> element_index ::= integer249> conversion ::= "r" | "s" | "a"250> format_spec ::= <described in the next section>251> ```252253В менее формальных терминах, поле замены начинается с *field\_name*, который может быть либо числом (для позиционного аргумента), либо идентификатором (для именованных аргументов). За ним следует необязательное поле *conversion*, перед которым стоит восклицательный знак `'!'`, и *format\_spec*, перед которым стоит двоеточие `':'`.254255Сам *field\_name* начинается либо с числа, либо с ключевого слова. Если это число, оно ссылается на позиционный аргумент; если ключевое слово – на именованный аргумент. За ним может следовать любое количество выражений индекса или атрибута. Выражение вида `'.name'` выбирает именованный атрибут с помощью [`getattr()`](https://python-all.ru/3.0/library/functions.html#getattr), а выражение вида `'[index]'` выполняет доступ по индексу с помощью [`__getitem__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getitem__).256257Несколько простых примеров строк форматирования:258259```python260"First, thou shalt count to {0}" # Ссылается на первый позиционный аргумент261"My quest is {name}" # Ссылается на именованный аргумент 'name'262"Weight in tons {0.weight}" # Атрибут 'weight' первого позиционного аргумента263"Units destroyed: {players[0]}" # Первый элемент именованного аргумента 'players'.264```265266Поле *conversion* вызывает приведение типа перед форматированием. Обычно задачу форматирования значения выполняет метод [`__format__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__format__) самого этого значения. Однако в некоторых случаях желательно принудительно отформатировать тип как строку, переопределив его собственное определение форматирования. Преобразовав значение в строку перед вызовом [`__format__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__format__), можно обойти обычную логику форматирования.267268В настоящее время поддерживаются три флага преобразования: `'!s'`, который вызывает [`str()`](https://python-all.ru/3.0/library/functions.html#str) для значения; `'!r'`, вызывающий [`repr()`](https://python-all.ru/3.0/library/functions.html#repr); и `'!a'`, вызывающий [`ascii()`](https://python-all.ru/3.0/library/functions.html#ascii).269270Несколько примеров:271272```python273"Harold's a clever {0!s}" # Сначала вызывает str() для аргумента274"Bring out the holy {name!r}" # Сначала вызывает repr() для аргумента275```276277Поле *format\_spec* содержит спецификацию того, как должно быть представлено значение, включая такие детали, как ширина поля, выравнивание, заполнение, десятичная точность и так далее. Каждый тип значения может определять свой собственный «форматирующий мини-язык» или интерпретацию *format\_spec*.278279Большинство встроенных типов поддерживают общий мини-язык форматирования, который описан в следующем разделе.280281Поле *format\_spec* может также содержать вложенные поля замены. Эти вложенные поля замены могут содержать только имя поля; флаги преобразования и спецификации формата не допускаются. Поля замены внутри format\_spec подставляются до того, как строка *format\_spec* будет интерпретирована. Это позволяет динамически задавать форматирование значения.282283Например, предположим, вы хотите создать поле замены, ширина которого определяется другой переменной:284285```python286"A man with two {0:{1}}".format("noses", 10)287```288289Сначала будет вычислено внутреннее поле замены, в результате чего форматная строка станет такой:290291```python292"A man with two {0:10}"293```294295Затем будет вычислено внешнее поле замены, и в итоге получится:296297```python298"noses "299```300301Подставляется в строку, в результате чего получается:302303```python304"A man with two noses "305```306307(Лишний пробел возникает из-за того, что указана ширина поля 10, и по умолчанию строки выравниваются по левому краю.)308309### Мини-язык спецификации формата310311«Спецификации формата» используются в полях замены внутри строки формата, чтобы определить, как отдельные значения представляются (см. [*Синтаксис строки формата*](https://python-all.ru/3.0/library/string.html#formatstrings)). Их также можно передавать напрямую встроенной функции [`format()`](https://python-all.ru/3.0/library/functions.html#format). Каждый форматируемый тип может определять, как интерпретировать спецификацию формата.312313Большинство встроенных типов реализуют следующие параметры для спецификаций формата, хотя некоторые параметры форматирования поддерживаются только числовыми типами.314315Общее правило: пустая строка формата (`""`) даёт тот же результат, что и вызов [`str()`](https://python-all.ru/3.0/library/functions.html#str) для значения.316317Общий вид *стандартного спецификатора формата*:318319```320321format_spec ::= [[fill]align][sign][#][0][width][.precision][type]322fill ::= <a character other than '}'>323align ::= "<" | ">" | "=" | "^"324sign ::= "+" | "-" | " "325width ::= integer326precision ::= integer327type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "x" | "X" | "%"328```329330Символ заполнения *заполнение* может быть любым символом, кроме '}' (который обозначает конец поля). Наличие символа заполнения обозначается следующим *следующий* символом, который должен быть одним из вариантов выравнивания. Если второй символ *format\_spec* не является допустимым вариантом выравнивания, считается, что отсутствуют как символ заполнения, так и вариант выравнивания.331332Значение различных параметров выравнивания следующее:333334> | Параметр | Значение |335> | --- | --- |336> | `'<'` | Выравнивает поле по левому краю в пределах доступного пространства (это значение по умолчанию). |337> | `'>'` | Выравнивает поле по правому краю в пределах доступного пространства. |338> | `'='` | Заставляет заполнение располагаться после знака (если он есть), но перед цифрами. Используется для печати полей в формате «+000000120». Этот вариант выравнивания применим только к числовым типам. |339> | `'^'` | Выравнивает поле по центру в пределах доступного пространства. |340341Обратите внимание, что если не задана минимальная ширина поля, ширина поля всегда будет равна размеру заполняемых данных, поэтому в этом случае параметр выравнивания не имеет смысла.342343Параметр *sign* допустим только для числовых типов и может быть одним из следующих:344345> | Параметр | Значение |346> | --- | --- |347> | `'+'` | указывает, что знак должен выводиться как для положительных, так и для отрицательных чисел. |348> | `'-'` | указывает, что знак должен выводиться только для отрицательных чисел (это поведение по умолчанию). |349> | пробел | указывает, что перед положительными числами должен ставиться пробел, а перед отрицательными – знак минус. |350351Параметр `'#'` допустим только для целых чисел и только для двоичного, восьмеричного или шестнадцатеричного вывода. Если он указан, это означает, что вывод будет предваряться соответственно `'0b'`, `'0o'` или `'0x'`.352353*ширина* – целое десятичное число, задающее минимальную ширину поля. Если не указано, ширина поля определяется содержимым.354355Если полю *width* предшествует символ нуля (`'0'`), это включает заполнение нулями. Это эквивалентно типу выравнивания *alignment* `'='` и символу заполнения *fill* `'0'`.356357*точность* – это десятичное число, указывающее, сколько цифр должно быть отображено после десятичной точки для значения с плавающей точкой, форматируемого с помощью `'f'` и `'F'`, или до и после десятичной точки для значения с плавающей точкой, форматируемого с помощью `'g'` или `'G'`. Для нечисловых типов это поле указывает максимальный размер поля – иными словами, сколько символов будет использовано из содержимого поля. *точность* игнорируется для целочисленных значений.358359Наконец, *тип* определяет, как должны быть представлены данные.360361Доступные типы представления для целых чисел:362363> | Тип | Значение |364> | --- | --- |365> | `'b'` | Двоичный формат. Выводит число в системе с основанием 2. |366> | `'c'` | Символ. Преобразует целое число в соответствующий символ Юникода перед выводом. |367> | `'d'` | Десятичное целое. Выводит число в системе с основанием 10. |368> | `'o'` | Восьмеричный формат. Выводит число в системе с основанием 8. |369> | `'x'` | Шестнадцатеричный формат. Выводит число по основанию 16, используя строчные буквы для цифр больше 9. |370> | `'X'` | Шестнадцатеричный формат. Выводит число по основанию 16, используя заглавные буквы для цифр больше 9. |371> | `'n'` | Число. То же, что и `'d'`, но с использованием текущей локали для вставки соответствующих разделителей групп разрядов. |372> | None | То же, что и `'d'`. |373374Доступные типы представления для чисел с плавающей запятой и десятичных чисел:375376> | Тип | Значение |377> | --- | --- |378> | `'e'` | Экспоненциальная запись. Выводит число в экспоненциальной записи, используя букву 'e' для обозначения порядка. |379> | `'E'` | Экспоненциальная запись. То же, что и `'e'`, но с использованием заглавной буквы «E» в качестве разделителя. |380> | `'f'` | Фиксированная точка. Отображает число как число с фиксированной точкой. |381> | `'F'` | Фиксированная точка. То же, что `'f'`. |382> | `'g'` | Общий формат. Выводит число в виде числа с фиксированной точкой, за исключением случаев, когда число слишком велико – в таком случае переключается на экспоненциальную запись `'e'`. Бесконечность и NaN форматируются как `inf`, `-inf` и `nan` соответственно. |383> | `'G'` | Общий формат. То же, что `'g'`, за исключением того, что переключается на `'E'`, если число становится слишком большим. Представления бесконечности и NaN также выводятся в верхнем регистре. |384> | `'n'` | Число. То же, что и `'g'`, но с использованием текущей локали для вставки соответствующих разделителей групп разрядов. |385> | `'%'` | Процент. Умножает число на 100 и выводит в фиксированном формате (`'f'`) с последующим знаком процента. |386> | None | То же, что `'g'`. |387388## Шаблонные строки389390Шаблоны предоставляют более простые подстановки строк, как описано в [**PEP 292**](https://python-all.ru/3.0/library/string.html). Вместо обычных подстановок на основе `%`, шаблоны поддерживают подстановки на основе `$`, используя следующие правила:391392- `$$` – это escape-последовательность; она заменяется на один символ `$`.393- `$identifier` обозначает заполнитель подстановки, соответствующий ключу отображения `"identifier"`. По умолчанию, `"identifier"` должно быть корректным идентификатором Python. Первый символ, не являющийся идентификатором, после символа `$` завершает этот спецификатор заполнителя.394- `${identifier}` эквивалентно `$identifier`. Такая форма требуется, когда за заполнителем следуют символы, являющиеся корректными идентификаторами, но не входящие в состав заполнителя, как в `"${noun}ification"`.395396Любое другое появление `$` в строке приведёт к возбуждению исключения [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError).397398Модуль `string` предоставляет класс [`Template`](https://python-all.ru/3.0/library/string.html#string.Template), который реализует эти правила. Методы класса [`Template`](https://python-all.ru/3.0/library/string.html#string.Template):399400#### `[string.Template]class string.Template(template)`401402Конструктор принимает единственный аргумент – строку шаблона.403404#### `[string.Template.substitute]substitute(mapping[, **kws])`405406Выполняет подстановку в шаблоне, возвращая новую строку.407408*mapping*409410– это любой объект, подобный словарю, с ключами, соответствующими заполнителям в шаблоне. В качестве альтернативы можно указать именованные аргументы, где имена аргументов являются заполнителями. Если указаны и411412*mapping*413414, и415416*kws*417418, и есть дубликаты, то заполнители из419420*kws*421422имеют приоритет.423424#### `[string.Template.safe_substitute]safe_substitute(mapping[, **kws])`425426Похоже на [`substitute()`](https://python-all.ru/3.0/library/string.html#string.Template.substitute), за исключением того, что если плейсхолдеры отсутствуют в *mapping* и *kws*, вместо возбуждения исключения [`KeyError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.KeyError), исходный плейсхолдер останется в результирующей строке нетронутым. Кроме того, в отличие от [`substitute()`](https://python-all.ru/3.0/library/string.html#string.Template.substitute), любые другие вхождения `$` будут просто возвращать `$` вместо возбуждения [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError).427428Хотя другие исключения всё ещё могут возникать, этот метод называется «безопасным» (safe), потому что подстановки всегда стараются вернуть рабочую строку вместо возбуждения исключения. В другом смысле, [`safe_substitute()`](https://python-all.ru/3.0/library/string.html#string.Template.safe_substitute) может быть чем угодно, но не безопасным, поскольку он молча игнорирует некорректные шаблоны, содержащие висячие разделители, несогласованные скобки или плейсхолдеры, не являющиеся валидными идентификаторами Python.429430Экземпляры [`Template`](https://python-all.ru/3.0/library/string.html#string.Template) также предоставляют один открытый атрибут данных:431432#### `[string.string.template]string.template`433434Это объект, передаваемый в аргумент435436*template*437438конструктора. В целом, не следует его изменять, хотя доступ только для чтения не гарантируется.439440Вот пример использования Template:441442```python443>>> from string import Template444>>> s = Template('$who likes $what')445>>> s.substitute(who='tim', what='kung pao')446'tim likes kung pao'447>>> d = dict(who='tim')448>>> Template('Give $who $100').substitute(d)449Traceback (most recent call last):450[...]451ValueError: Invalid placeholder in string: line 1, col 10452>>> Template('$who likes $what').substitute(d)453Traceback (most recent call last):454[...]455KeyError: 'what'456>>> Template('$who likes $what').safe_substitute(d)457'tim likes $what'458```459460Расширенное использование: можно создавать подклассы [`Template`](https://python-all.ru/3.0/library/string.html#string.Template), чтобы настроить синтаксис плейсхолдера, символ-разделитель или всё регулярное выражение, используемое для разбора строк шаблона. Для этого можно переопределить следующие атрибуты класса:461462- *delimiter* – это литерал строки, описывающий разделитель, который вводит заполнитель. Значение по умолчанию `$`. Обратите внимание: это *не* должно быть регулярным выражением, так как реализация при необходимости вызовет [`re.escape()`](https://python-all.ru/3.0/library/re.html#re.escape) для этой строки.463- *idpattern* – Это регулярное выражение, описывающее шаблон для плейсхолдеров без фигурных скобок (скобки будут добавлены автоматически по мере необходимости). Значение по умолчанию – регулярное выражение `[_a-z][_a-z0-9]*`.464465В качестве альтернативы можно указать всё регулярное выражение, переопределив атрибут класса *pattern*. Если это сделать, значение должно быть объектом регулярного выражения с четырьмя именованными захватывающими группами. Эти группы соответствуют правилам, приведённым выше, а также правилу недопустимых плейсхолдеров:466467- *escaped* – эта группа соответствует управляющей последовательности, например `$$`, в шаблоне по умолчанию.468- *named* – эта группа соответствует имени плейсхолдера без скобок; она не должна включать разделитель в захватывающую группу.469- *braced* – эта группа соответствует имени плейсхолдера, заключённого в скобки; она не должна включать ни разделитель, ни скобки в захватывающую группу.470- *invalid* – эта группа соответствует любому другому шаблону разделителя (обычно одиночному разделителю), и она должна появляться последней в регулярном выражении.471472## Функции для строк473474Следующие функции доступны для работы со строковыми объектами. Они недоступны в качестве методов строк.475476#### `[string.capwords]string.capwords(s)`477478Разделяет аргумент на слова с помощью479480`split()`481482, делает первую букву каждого слова заглавной с помощью483484`capitalize()`485486и объединяет слова, начинающиеся с заглавной буквы, с помощью487488`join()`489490. Обратите внимание, что эта функция заменяет последовательности пробельных символов одним пробелом и удаляет ведущие и завершающие пробелы.491492#### `[string.maketrans]string.maketrans(frm, to)`493494Возвращает таблицу перевода, подходящую для передачи в495496[`bytes.translate()`](https://python-all.ru/3.0/library/stdtypes.html#bytes.translate)497498, которая будет сопоставлять каждый символ из499500*from*501502с символом на той же позиции в503504*to*505506;507508*from*509510и511512*to*513514должны иметь одинаковую длину.515