Kapsy v řetězci nahrazení v Pythonu
Při práci s metodou sub, pokud
chcete něco uložit do kapsy v regulárním výrazu,
můžete do řetězce nahrazení vložit obsah
této kapsy napsáním dvojitého lomítka \
a čísla kapsy. Například, \1 -
první kapsa, \2 - druhá kapsa
a tak dále.
K čemu to je a jak se to používá, se podívejme na příkladech.
Příklad
Najděme všechna čísla a místo nich vložme tato stejná čísla, ale v kulatých závorkách. K tomu všechna nalezená čísla nahradíme jimi samými, ale v závorkách:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
Výsledkem bude, že se do proměnné zapíše následující:
'(1) (23) (456) xax'
Příklad
Najděme všechny řetězce představující
čísla s 'x' kolem a nahraďme tato
čísla jimi samými, ale s '!' znaménky
kolem:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
Výsledkem bude, že se do proměnné zapíše následující:
'!1! !23! !456! xax'
Příklad
Pojďme vyřešit následující úlohu: je dán řetězec
'aaa@bbb ccc@ddd' - písmena, pak
zavináč, pak písmena. Je třeba prohodit místa
písmen v podřetězci 'aaa@bbb' před
'@' a po:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
Výsledkem bude, že se do proměnné zapíše následující:
'bbb@aaa ccc@ddd'
Praktické úlohy
Je dán řetězec:
txt = '12 34 56 78'
Prohoďte číslice ve všech dvouciferných číslech.
Je dán řetězec s datem:
txt = '31.12.2025'
Převeďte toto datum na '2025.12.31'.