АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗pyPmREMSP 58 of 129 menu
Бесплатная Тренировка Верстки. Приглашаются желающие поверстать!

Карманы в строке замены в Python

При работе с методом sub, если что-то нужно положить в карман в регулярке, то в строке замены можно вставить содержимое этого кармана написав двойной слеш \\ и номер кармана. Например, \\1 - первый карман, \\2 - второй карман и так далее.

Зачем это нужно и как этим пользоваться давайте посмотрим на примерах.

Пример

Давайте найдем все числа и вместо них вставим эти же числа, но в круглых скобках. Для этого все найденные числа заменим на них самих же, но в скобках:

txt = '1 23 456 xax' res = re.sub('(\d+)', '(\\1)', txt) print(res)

В результате в переменную запишется следующее:

'(1) (23) (456) xax'

Пример

Давайте найдем все строки, представляющие собой числа с иксами вокруг и заменим эти числа на них же, но с '!' знаками вокруг:

txt = 'x1x x23x x456x xax' res = re.sub('x(\d+)x', '!\\1!', txt) print(res)

В результате в переменную запишется следующее:

'!1! !23! !456! xax'

Пример

Давайте решим следующую задачу: дана строка 'aaa@bbb ссс@ddd' - буквы, потом собака, потом буквы. Нужно поменять местами буквы в подстроке 'aaa@bbb' до '@' и после:

txt = 'aaa@bbb ссс@ddd' res = re.sub('([a-z]+)@([a-z]+)', '\\2@\\1', txt) print(res)

В результате в переменную запишется следующее:

'bbb@aaa ссс@ddd'

Практические задачи

Дана строка:

txt = '12 34 56 78'

Поменяйте местами цифры во всех двухзначных числах.

Дана строка с датой:

txt = '31.12.2025'

Преобразуйте эту дату в '2025.12.31'.

enru