Taskut korvausmerkkijonossa Pythonissa
Kun työskentelet metodin sub kanssa, jos
jotain on laitettava taskuun säännöllisessä lausekkeessa,
korvausmerkkijonoon voi lisätä kyseisen
taskun sisällön kirjoittamalla kaksinkertaisen vinoviivan \
ja taskun numeron. Esimerkiksi, \1 -
ensimmäinen tasku, \2 - toinen tasku
ja niin edelleen.
Mitä varten tätä tarvitaan ja kuinka sitä käytetään, katsotaan esimerkkien avulla.
Esimerkki
Etsitään kaikki numerot ja niiden tilalle lisätään samat numerot, mutta suluissa. Tätä varten kaikki löydetyt numerot korvataan itsellään, mutta suluissa:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
Tuloksena muuttujaan kirjoitetaan seuraava:
'(1) (23) (456) xax'
Esimerkki
Etsitään kaikki merkkijonot, jotka edustavat
numerot, joiden ympärillä on x-kirjaimia, ja korvataan nämä
numerot itsellään, mutta '!' -merkeillä
ympäröitynä:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
Tuloksena muuttujaan kirjoitetaan seuraava:
'!1! !23! !456! xax'
Esimerkki
Ratkaistaan seuraava tehtävä: annettu merkkijono
'aaa@bbb ccc@ddd' - kirjaimia, sitten
@-merkki, sitten kirjaimia. Kirjaimet on vaihdettava paikkoihin
osamerkkijonossa 'aaa@bbb' ennen
'@' -merkkiä ja sen jälkeen:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
Tuloksena muuttujaan kirjoitetaan seuraava:
'bbb@aaa ccc@ddd'
Käytännön tehtävät
Annettu merkkijono:
txt = '12 34 56 78'
Vaihda numeroiden paikat kaikissa kaksinumeroisissa luvuissa.
Annettu merkkijono päivämäärällä:
txt = '31.12.2025'
Muunna tämä päivämäärä muotoon '2025.12.31'.