Kieszenie w ciągu zastępowania w Pythonie
Podczas pracy z metodą sub, jeśli
coś trzeba umieścić w kieszeni w wyrażeniu regularnym,
to w ciągu zastępowania można wstawić zawartość
tej kieszeni pisząc podwójny ukośnik \
i numer kieszeni. Na przykład, \1 -
pierwsza kieszeń, \2 - druga kieszeń
i tak dalej.
Po co to jest potrzebne i jak z tego korzystać przyjrzyjmy się na przykładach.
Przykład
Znajdźmy wszystkie liczby i zamiast nich wstawmy te same liczby, ale w nawiasach okrągłych. Aby to zrobić, wszystkie znalezione liczby zamieńmy na nie same, ale w nawiasach:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
W rezultacie do zmiennej zapisze się następujące:
'(1) (23) (456) xax'
Przykład
Znajdźmy wszystkie ciągi znaków, reprezentujące
sobie liczby z iksami dookoła i zamieńmy te
liczby na nie same, ale z '!' znakami
dookoła:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
W rezultacie do zmiennej zapisze się następujące:
'!1! !23! !456! xax'
Przykład
Rozwiążmy następujące zadanie: dany jest ciąg znaków
'aaa@bbb ccc@ddd' - litery, potem
małpa, potem litery. Należy zamienić miejscami
litery w podciągu 'aaa@bbb' przed
'@' i po:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
W rezultacie do zmiennej zapisze się następujące:
'bbb@aaa ccc@ddd'
Zadania praktyczne
Dany jest ciąg znaków:
txt = '12 34 56 78'
Zamień miejscami cyfry we wszystkich dwucyfrowych liczbach.
Dany jest ciąg znaków z datą:
txt = '31.12.2025'
Przekształć tę datę na '2025.12.31'.