string — Общие операции со строками
Исходный код: Lib/string.py
Константы строк
Константы, определенные в этом модуле:
-
string.ascii_letters -
Соединение констант
ascii_lowercaseиascii_uppercase, описанных ниже. Это значение не зависит от локали.
-
string.ascii_lowercase -
Строчные буквы
'abcdefghijklmnopqrstuvwxyz'. Это значение не зависит от локали и не будет меняться.
-
string.ascii_uppercase -
Прописные буквы
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. Это значение не зависит от локали и не будет меняться.
-
string.digits -
Строка
'0123456789'.
-
string.hexdigits -
Строка
'0123456789abcdefABCDEF'.
-
string.octdigits -
Строка
'01234567'.
-
string.punctuation -
Строка ASCII-символов, которые считаются знаками пунктуации в локали
C:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~.
-
string.printable -
Строка ASCII-символов, которые считаются печатными. Это комбинация
digits,ascii_letters,punctuationиwhitespace.
-
string.whitespace -
Строка, содержащая все ASCII-символы, которые считаются пробелами. В нее входят пробел, табуляция, перевод строки, возврат каретки, разделитель страницы и вертикальная табуляция.
Настройка форматирования строк
Встроенный класс строк предоставляет возможность выполнения сложных подстановок переменных и форматирования значений с помощью метода format(), описанного в PEP 3101. Класс Formatter в модуле string позволяет создавать и настраивать собственное поведение форматирования строк, используя ту же реализацию, что и встроенный метод format().
-
class string.Formatter -
У класса
Formatterесть следующие общедоступные методы:-
format(format_string, /, *args, **kwargs) -
Основной метод API. Принимает строку форматирования и произвольный набор позиционных и ключевых аргументов. Он просто обёртка, вызывающая
vformat().Изменено в версии 3.7: Аргумент строки форматирования теперь является только позиционным.
-
vformat(format_string, args, kwargs) -
Эта функция выполняет фактическую работу по форматированию. Она доступна как отдельная функция в случаях, когда вы хотите передать предварительно определённый словарь аргументов, а не распаковывать и упаковывать словарь в отдельные аргументы с помощью синтаксиса
*argsи**kwargs.vformat()выполняет работу по разбиению строки форматирования на данные символов и поля замены.
Кроме того, класс
Formatterопределяет ряд методов, которые предполагается заменить подклассами:-
parse(format_string) -
Проходим по строке форматирования и возвращаем итерируемый объект кортежей (literal_text, field_name, format_spec, conversion). Это используется
vformat()для разбиения строки на литеральные текстовые данные или поля замены.
-
get_field(field_name, args, kwargs) -
На основании field_name, возвращаемого
parse()(см. выше), преобразует его в объект для форматирования. Возвращает кортеж (объект, используемый_ключ). По умолчанию используется строковый формат, определенный в PEP 3101, такой как “0[name]” или “label.title”. args и kwargs передаются вvformat().
-
get_value(key, args, kwargs) -
Получение значения заданного поля. Аргумент key может быть целым числом или строкой. Если это целое число, оно представляет индекс позиционного аргумента в args; если это строка, она представляет именованный аргумент в kwargs.
-
check_unused_args(used_args, args, kwargs) -
Реализация проверки неиспользуемых аргументов, если это нужно. Аргументы этой функции — множество всех ключей аргументов, которые фактически упоминались в строке форматирования (целые числа для позиционных аргументов и строки для именованных аргументов), и ссылка на args и kwargs, которые были переданы в vformat. Множество неиспользуемых аргументов можно вычислить из этих параметров. Предполагается, что
check_unused_args()вызывает исключение при неудачной проверке.
-
format_field(value, format_spec) -
format_field()просто вызывает встроенную глобальную функциюformat(). Метод предоставлен для возможности переопределения его подклассами.
-
convert_field(value, conversion) -
Преобразует значение (возвращённое
get_field()), используя тип преобразования (как в кортеже, возвращаемом методомparse()). По умолчанию поддерживаются типы преобразования 's' (str), 'r' (repr) и 'a' (ascii).
-
Синтаксис строк форматирования
Метод str.format() и класс Formatter используют одинаковый синтаксис для строк форматирования (хотя в случае с Formatter, подклассы могут определять свой собственный синтаксис строк форматирования). Синтаксис связан с синтаксисом форматируемых строковых литералов, но он менее сложный и, в частности, не поддерживает произвольные выражения.
Строки форматирования содержат «поля замены», заключённые в фигурные скобки {}. Всё, что не находится в фигурных скобках, считается литеральной строкой, которая без изменений копируется в выходные данные. Если вам нужно включить символ фигурной скобки в литеральную строку, его можно экранировать, продублировав: {{ и }}.
Грамматика поля замены выглядит следующим образом:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
arg_name ::= [identifier | digit+]
attribute_name ::= identifier
element_index ::= digit+ | index_string
index_string ::= <any source character except "]"> +
conversion ::= "r" | "s" | "a"
format_spec ::= format-spec:format_spec
Проще говоря, поле замены может начинаться с имени_поля, которое указывает объект, значение которого будет отформатировано и вставлено в выходные данные вместо поля замены. Имя_поля необязательно может следовать преобразование, которое предшествует восклицательному знаку '!', и спецификация_формата, которая предшествует двоеточию ':'. Они задают нестандартный формат значения замены.
См. также раздел Мини-язык спецификаций формата.
Само имя_поля начинается с имя_аргумента, которое может быть числом или ключевым словом. Если это число, оно относится к позиционному аргументу, а если это ключевое слово, оно относится к именованному аргументу. Имя_аргумента рассматривается как число, если вызов str.isdecimal() для строки вернёт true. Если числовые имена аргументов в строке форматирования следуют последовательности 0, 1, 2, …, их все можно опустить (а не только некоторые), и числа 0, 1, 2, … будут автоматически вставлены в этом порядке. Поскольку имя_аргумента не заключено в кавычки, нельзя указать произвольные ключи словаря (например, строки '10' или ':-]') в строке форматирования. За имя_аргумента может следовать любое количество выражений индекса или атрибутов. Выражение вида '.name' выбирает именованный атрибут с помощью getattr(), а выражение вида '[index]' выполняет поиск по индексу с использованием __getitem__().
Изменено в версии 3.1: Позиционные спецификаторы аргументов могут быть опущены для str.format(), поэтому '{} {}'.format(a, b) эквивалентно '{0} {1}'.format(a, b).
Изменено в версии 3.4: Позиционные спецификаторы аргументов могут быть опущены для Formatter.
Примеры простых строк форматирования:
"First, thou shalt count to {0}" # References first positional argument
"Bring me a {}" # Implicitly references the first positional argument
"From {} to {}" # Same as "From {0} to {1}"
"My quest is {name}" # References keyword argument 'name'
"Weight in tons {0.weight}" # 'weight' attribute of first positional arg
"Units destroyed: {players[0]}" # First element of keyword argument 'players'.
Поле преобразования вызывает приведение типа перед форматированием. Обычно форматирование значения выполняется методом __format__() самого значения. Однако в некоторых случаях желательно принудительно отформатировать тип как строку, переопределяя собственное определение форматирования. Преобразуя значение в строку перед вызовом __format__(), можно обойти обычную логику форматирования.
В настоящее время поддерживаются три флага преобразования: '!s' вызывающий str() для значения, '!r' вызывающий repr() и '!a' вызывающий ascii().
Примеры:
"Harold's a clever {0!s}" # Calls str() on the argument first
"Bring out the holy {name!r}" # Calls repr() on the argument first
"More {!a}" # Calls ascii() on the argument first
Поле спецификация_формата содержит спецификацию представления значения, включая такие детали, как ширина поля, выравнивание, заполнение, десятичная точность и т. д. Каждый тип значения может определить свой собственный «мини-язык форматирования» или интерпретацию спецификации_формата.
Большинство встроенных типов поддерживают общий мини-язык форматирования, который описан в следующем разделе.
Поле спецификация_формата также может содержать вложенные поля замены. Эти вложенные поля замены могут содержать имя поля, флаг преобразования и спецификацию формата, но более глубокие вложения не допускаются. Поля замены в спецификации_формата подставляются перед интерпретацией строки спецификации_формата. Это позволяет динамически задавать форматирование значения.
См. раздел Примеры форматирования для примеров.
Язык форматирования мини-язык
«Спецификации форматирования» используются внутри полей замещения, содержащихся в строке форматирования, для определения того, как отдельные значения представляются (см. Синтаксис строк форматирования и f-строки). Их также можно передать напрямую в встроенную функцию format(). Каждый форматируемый тип может определять, как должна интерпретироваться спецификация форматирования.
Большинство встроенных типов реализуют следующие параметры для спецификаций форматирования, хотя некоторые параметры форматирования поддерживаются только числовыми типами.
Общее соглашение состоит в том, что пустая спецификация форматирования производит такой же результат, как если бы вы вызвали str() для значения. Непустая спецификация форматирования обычно изменяет результат.
Общая форма стандартного спецификатора форматирования:
format_spec ::= [[fill]align][sign]["z"]["#"]["0"][width][grouping_option]["." precision][type] fill ::= <any character> align ::= "<" | ">" | "=" | "^" sign ::= "+" | "-" | " " width ::= digit+ grouping_option ::= "_" | "," precision ::= digit+ type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Если указано допустимое значение выравнивания, ему может предшествовать символ заполнения, который может быть любым символом и по умолчанию равен пробелу, если он опущен. Невозможно использовать литеральную фигурную скобку (”{” или “}”) в качестве символа заполнения в форматируемой строке литерала или при использовании метода str.format(). Однако можно вставить фигурную скобку с вложенным полем замены. Это ограничение не влияет на функцию format().
Значение различных параметров выравнивания:
Параметр | Значение |
|---|---|
| Выравнивает поле влево внутри доступного пространства (это значение по умолчанию для большинства объектов). |
| Выравнивает поле вправо внутри доступного пространства (это значение по умолчанию для чисел). |
| Выравнивает заполнение после знака (если есть), но перед цифрами. Используется для печати полей в формате ‘+000000120’. Этот параметр выравнивания действителен только для числовых типов. Он становится значением по умолчанию для чисел, когда «0» непосредственно предшествует ширине поля. |
| Выравнивает поле по центру внутри доступного пространства. |
Обратите внимание, что если не определена минимальная ширина поля, ширина поля всегда будет такой же, как размер данных, которые нужно в него поместить, поэтому параметр выравнивания в этом случае не имеет значения.
Параметр знака действителен только для числовых типов и может быть одним из следующих:
Параметр | Значение |
|---|---|
| указывает, что знак должен использоваться как для положительных, так и для отрицательных чисел. |
| указывает, что знак должен использоваться только для отрицательных чисел (это поведение по умолчанию). |
пробел | указывает, что для положительных чисел должен использоваться ведущий пробел, а для отрицательных — знак минус. |
Параметр 'z' принудительно преобразует отрицательные нулевые значения с плавающей запятой в положительные нули после округления до точности форматирования. Этот параметр действителен только для типов представления чисел с плавающей запятой.
Изменено в версии 3.11: Добавлен параметр 'z' (см. также PEP 682).
Параметр '#' вызывает использование «альтернативной формы» для преобразования. Альтернативная форма определяется по-разному для разных типов. Этот параметр действителен только для целочисленных, вещественных и комплексных типов. Для целых чисел, при использовании двоичного, восьмеричного или шестнадцатеричного вывода, этот параметр добавляет соответствующие префиксы '0b', '0o', '0x', или '0X' к значению вывода. Для чисел с плавающей запятой и комплексных чисел альтернативная форма заставляет результат преобразования всегда содержать десятичную точку, даже если за ней не следует ни одной цифры. Обычно десятичная точка появляется в результате этих преобразований только в том случае, если за ней следует цифра. Кроме того, для преобразований 'g' и 'G' завершающие нули не удаляются из результата.
Параметр ',' указывает на использование запятой в качестве разделителя тысяч. Для использования разделителя, учитывающего локаль, используйте целочисленный тип представления 'n'.
Изменено в версии 3.1: Добавлен параметр ',' (см. также PEP 378).
Параметр '_' указывает на использование символа подчеркивания в качестве разделителя тысяч для типов представления чисел с плавающей запятой и для целочисленного типа представления 'd'. Для целочисленных типов представления 'b', 'o', 'x', и 'X', подчеркивания будут вставляться через каждые 4 цифры. Для других типов представления указание этого параметра является ошибкой.
Изменено в версии 3.6: Добавлен параметр '_' (см. также PEP 515).
width — десятичное целое число, определяющее минимальную общую ширину поля, включая любые префиксы, разделители и другие символы форматирования. Если не указано, ширина поля определяется содержимым.
Когда явное выравнивание не задано, предшествующий символу width символ ноль ('0') включает знак-ориентированную нулевую дополненность для числовых типов. Это эквивалентно символу заполнения '0' с типом выравнивания '='.
Изменено в версии 3.10: Предшествующий символу width символ '0' больше не влияет на выравнивание по умолчанию для строк.
precision — десятичное целое число, указывающее, сколько цифр должно быть отображено после десятичной точки для типов представления 'f' и 'F', или до и после десятичной точки для типов представления 'g' или 'G'. Для строчных типов представления поле указывает максимальный размер поля — другими словами, сколько символов будет использовано из содержимого поля. Параметр precision не допускается для целочисленных типов представления.
И наконец, type определяет, как должны быть представлены данные.
Доступные типы представления для строк:
Тип | Значение |
|---|---|
| Формат строки. Это тип по умолчанию для строк и может быть опущен. |
None | То же, что и |
Доступные целочисленные типы представления:
Тип | Значение |
|---|---|
| Двоичный формат. Выводит число в системе счисления по основанию 2. |
| Символ. Преобразует целое число в соответствующий символ Юникода перед печатью. |
| Десятичное целое число. Выводит число в системе счисления по основанию 10. |
| Восьмеричный формат. Выводит число в системе счисления по основанию 8. |
| Шестнадцатеричный формат. Выводит число в системе счисления по основанию 16, используя строчные буквы для цифр, больших 9. |
| Шестнадцатеричный формат. Выводит число в системе счисления по основанию 16, используя прописные буквы для цифр, больших 9. В случае указания |
| Число. Это то же самое, что и |
None | То же, что и |
В дополнение к вышеперечисленным типам представления, целые числа могут быть отформатированы с использованием типов представления с плавающей запятой, перечисленных ниже (кроме 'n' и None). При этом используется float() для преобразования целого числа в число с плавающей запятой перед форматированием.
Тип | Значение |
|---|---|
| Научная запись. Для заданной точности |
| Научная запись. Аналогично |
| Форматирование с фиксированной точкой. Для заданной точности |
| Форматирование с фиксированной точкой. Аналогично |
|
Общий формат. Для заданной точности Точные правила следующие: предположим, что результат, отформатированный с типом представления Без указанной точности используется точность Положительная и отрицательная бесконечность, положительный и отрицательный ноль, и nans форматируются как |
| Общий формат. Аналогично |
| Число. Это то же самое, что и |
| Процент. Умножает число на 100 и отображает в формате с фиксированной точкой ( |
None |
Для Для Общий эффект заключается в соответствии с выводом |
Примеры форматирования
Этот раздел содержит примеры синтаксиса str.format() и сравнения со старым форматированием %.
В большинстве случаев синтаксис аналогичен старому форматированию %, с добавлением {} и с использованием : вместо %. Например, '%03.2f' может быть переведено в '{:03.2f}'.
Новый синтаксис форматирования также поддерживает новые и отличные опции, показанные в следующих примерах.
Доступ к аргументам по позиции:
>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
>>> '{}, {}, {}'.format('a', 'b', 'c') # 3.1+ only
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')
'c, b, a'
>>> '{2}, {1}, {0}'.format(*'abc') # unpacking argument sequence
'c, b, a'
>>> '{0}{1}{0}'.format('abra', 'cad') # arguments' indices can be repeated
'abracadabra'
Доступ к аргументам по имени:
>>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
'Coordinates: 37.24N, -115.81W'
>>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
>>> 'Coordinates: {latitude}, {longitude}'.format(**coord)
'Coordinates: 37.24N, -115.81W'
Доступ к атрибутам аргументов:
>>> c = 3-5j
>>> ('The complex number {0} is formed from the real part {0.real} '
... 'and the imaginary part {0.imag}.').format(c)
'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.'
>>> class Point:
... def __init__(self, x, y):
... self.x, self.y = x, y
... def __str__(self):
... return 'Point({self.x}, {self.y})'.format(self=self)
...
>>> str(Point(4, 2))
'Point(4, 2)'
Доступ к элементам аргументов:
>>> coord = (3, 5)
>>> 'X: {0[0]}; Y: {0[1]}'.format(coord)
'X: 3; Y: 5'
Замена %s и %r:
>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2"
Выравнивание текста и указание ширины:
>>> '{:<30}'.format('left aligned')
'left aligned '
>>> '{:>30}'.format('right aligned')
' right aligned'
>>> '{:^30}'.format('centered')
' centered '
>>> '{:*^30}'.format('centered') # use '*' as a fill char
'***********centered***********'
Замена %+f, %-f, и % f и указание знака:
>>> '{:+f}; {:+f}'.format(3.14, -3.14) # show it always
'+3.140000; -3.140000'
>>> '{: f}; {: f}'.format(3.14, -3.14) # show a space for positive numbers
' 3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14) # show only the minus -- same as '{:f}; {:f}'
'3.140000; -3.140000'
Замена %x и %o и преобразование значения в разные системы счисления:
>>> # format also supports binary numbers
>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)
'int: 42; hex: 2a; oct: 52; bin: 101010'
>>> # with 0x, 0o, or 0b as prefix:
>>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42)
'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'
Использование запятой в качестве разделителя тысяч:
>>> '{:,}'.format(1234567890)
'1,234,567,890'
Выражение процента:
>>> points = 19
>>> total = 22
>>> 'Correct answers: {:.2%}'.format(points/total)
'Correct answers: 86.36%'
Использование форматирования, специфичного для типа:
>>> import datetime
>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'
Вложенные аргументы и более сложные примеры:
>>> for align, text in zip('<^>', ['left', 'center', 'right']):
... '{0:{fill}{align}16}'.format(text, fill=align, align=align)
...
'left<<<<<<<<<<<<'
'^^^^^center^^^^^'
'>>>>>>>>>>>right'
>>>
>>> octets = [192, 168, 0, 1]
>>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)
'C0A80001'
>>> int(_, 16)
3232235521
>>>
>>> width = 5
>>> for num in range(5,12):
... for base in 'dXob':
... print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ')
... print()
...
5 5 5 101
6 6 6 110
7 7 7 111
8 8 10 1000
9 9 11 1001
10 A 12 1010
11 B 13 1011
Строки шаблонов
Строки шаблонов предоставляют более простые подстановки строк, как описано в PEP 292. Основное применение строк шаблонов — для интернационализации (i18n), так как в этом контексте более простой синтаксис и функциональность делают их проще для перевода, чем другие встроенные средства форматирования строк в Python. Примером библиотеки, построенной на строках шаблонов для i18n, является пакет flufl.i18n.
Строки шаблонов поддерживают подстановки на основе $, используя следующие правила:
-
$$является экранированием; оно заменяется на один$. -
$identifierуказывает на заполнитель подстановки, соответствующий ключу сопоставления"identifier". По умолчанию"identifier"ограничен любой регистронезависимой ASCII-буквенно-цифровой строкой (включая символы подчеркивания), которая начинается с символа подчеркивания или ASCII-буквы. Первый символ, не являющийся идентификатором, после символа$, завершает это определение заполнителя. -
${identifier}эквивалентно$identifier. Оно требуется, когда за заполнителем следуют допустимые символы идентификатора, но они не являются частью заполнителя, например,"${noun}ification".
Любое другое появление $ в строке приведет к возбуждению исключения ValueError.
Модуль string предоставляет класс Template, который реализует эти правила. Методы класса Template:
-
class string.Template(template) -
Конструктор принимает один аргумент, который является строкой шаблона.
-
substitute(mapping={}, /, **kwds) -
Выполняет подстановку шаблона, возвращая новую строку. mapping — это любой объект типа словаря с ключами, соответствующими заполнителям в шаблоне. В качестве альтернативы вы можете предоставить именованные аргументы, где именованные аргументы — это заполнители. Если заданы как mapping, так и kwds и есть дубликаты, заполнители из kwds имеют приоритет.
-
safe_substitute(mapping={}, /, **kwds) -
Аналогично
substitute(), за исключением того, что если заполнители отсутствуют в mapping и kwds, вместо возбуждения исключенияKeyErrorисходный заполнитель отобразится в результирующей строке без изменений. Кроме того, в отличие отsubstitute(), любое другое появление$просто вернёт$вместо возбужденияValueError.Хотя другие исключения все еще могут произойти, этот метод называется «безопасным», потому что он всегда пытается вернуть пригодную для использования строку вместо возбуждения исключения. В другом смысле
safe_substitute()может быть чем угодно, кроме безопасного, так как он будет молча игнорировать неправильно сформированные шаблоны, содержащие висящие разделители, несовпадающие фигурные скобки или заполнители, которые не являются допустимыми идентификаторами Python.
-
is_valid() -
Возвращает false, если шаблон содержит недопустимые заполнители, которые заставят
substitute()возбудитьValueError.Добавлен в версии 3.11.
-
get_identifiers() -
Возвращает список допустимых идентификаторов в шаблоне в порядке их первого появления, игнорируя любые недопустимые идентификаторы.
Добавлен в версии 3.11.
Экземпляры
Templateтакже предоставляют одно общедоступное свойство данных:-
template -
Это объект, переданный в аргумент template конструктора. В целом, вы не должны его изменять, но доступ для чтения только не навязывается.
-
Вот пример использования шаблона:
>>> from string import Template
>>> s = Template('$who likes $what')
>>> s.substitute(who='tim', what='kung pao')
'tim likes kung pao'
>>> d = dict(who='tim')
>>> Template('Give $who $100').substitute(d)
Traceback (most recent call last):
...
ValueError: Invalid placeholder in string: line 1, col 11
>>> Template('$who likes $what').substitute(d)
Traceback (most recent call last):
...
KeyError: 'what'
>>> Template('$who likes $what').safe_substitute(d)
'tim likes $what'
Расширенное использование: вы можете создать подклассы Template, чтобы настроить синтаксис заполнителей, символ разделителя или весь регулярный выражение, используемый для анализа строк шаблонов. Для этого вы можете переопределить эти свойства класса:
-
delimiter — это литеральная строка, описывающая разделитель, вводящий заполнитель. Значение по умолчанию —
$. Обратите внимание, что это не должно быть регулярное выражение, так как реализация будет вызыватьre.escape()для этой строки при необходимости. Кроме того, вы не можете изменить разделитель после создания класса (т. е. другой разделитель должен быть установлен в пространстве имен подкласса). -
idpattern — это регулярное выражение, описывающее шаблон для заполнителей без фигурных скобок. Значение по умолчанию — регулярное выражение
(?a:[_a-z][_a-z0-9]*). Если это значение задано, а braceidpattern —None, этот шаблон также будет применяться к заполнителям в фигурных скобках.Примечание
Поскольку флаг по умолчанию flags —
re.IGNORECASE, шаблон[a-z]может соответствовать некоторым не-ASCII символам. Вот почему мы здесь используем местный флагa.Изменено в версии 3.7: braceidpattern может быть использован для определения отдельных шаблонов, используемых внутри и вне фигурных скобок.
-
braceidpattern — это такое же, как idpattern, но описывает шаблон для заполнителей в фигурных скобках. По умолчанию
None, что означает использовать idpattern (т. е. одинаковый шаблон используется внутри и вне фигурных скобок). При заданном значении это позволяет определить разные шаблоны для заполнителей в фигурных скобках и без них.Добавлен в версии 3.7.
-
flags — флаги регулярного выражения, которые будут применяться при компиляции регулярного выражения для распознавания подстановок. Значение по умолчанию —
re.IGNORECASE. Обратите внимание, чтоre.VERBOSEвсегда будет добавлен к флагам, поэтому пользовательские idpattern должны соответствовать соглашениям для подробных регулярных выражений.Добавлен в версии 3.2.
В качестве альтернативы вы можете предоставить всё регулярное выражение с помощью переопределения свойства класса pattern. Если вы это сделаете, значение должно быть объектом регулярного выражения с четырьмя именованными группами захвата. Группы захвата соответствуют правилам, описанным выше, вместе с правилом недопустимого заполнителя:
-
escaped — эта группа соответствует последовательности экранирования, например,
$$, в шаблоне по умолчанию. - named — эта группа соответствует имени заполнителя без фигурных скобок; она не должна включать разделитель в группу захвата.
- braced — эта группа соответствует имени заполнителя в фигурных скобках; она не должна включать ни разделитель, ни фигурные скобки в группу захвата.
- invalid — эта группа соответствует любому другому шаблону разделителей (обычно одному разделителю), и она должна стоять последней в регулярном выражении.
Методы этого класса возбудят исключение ValueError, если шаблон будет сопоставлен без соответствия одной из этих именованных групп.
Вспомогательные функции
-
string.capwords(s, sep=None) -
Разбивает аргумент на слова с помощью
str.split(), приводит каждое слово в верхний регистр с помощьюstr.capitalize()и объединяет капитализированные слова с помощьюstr.join(). Если необязательный второй аргумент sep отсутствует илиNone, последовательности пробельных символов заменяются одним пробелом, а начальные и конечные пробелы удаляются; в противном случае sep используется для разделения и объединения слов.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/string.html