Θήκες στην αντικατάσταση συμβολοσειρών στην Python
Όταν εργάζεστε με την μέθοδο sub, αν
χρειαστεί να βάλετε κάτι σε μια θήκη στην κανονική έκφραση,
τότε στην αντικατάσταση συμβολοσειράς μπορείτε να εισαγάγετε το περιεχόμενο
αυτής της θήκης γράφοντας διπλή κάθετο \
και τον αριθμό της θήκης. Για παράδειγμα, \1 -
πρώτη θήκη, \2 - δεύτερη θήκη
και ούτω καθεξής.
Γιατί αυτό είναι χρήσιμο και πώς να το χρησιμοποιήσετε ας δούμε με παραδείγματα.
Παράδειγμα
Ας βρούμε όλους τους αριθμούς και αντί για αυτούς να εισάγουμε αυτούς τους ίδιους αριθμούς, αλλά μέσα σε παρενθέσεις. Για αυτό, όλους τους αριθμούς που βρέθηκαν θα αντικαταστήσουμε με τους εαυτούς τους, αλλά σε παρενθέσεις:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'(1) (23) (456) xax'
Παράδειγμα
Ας βρούμε όλες τις συμβολοσειρές που αντιπροσωπεύουν
αριθμούς με 'x' γύρω τους και αντικαταστήσουμε αυτούς
τους αριθμούς με τους εαυτούς τους, αλλά με '!' σημάδια
γύρω:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'!1! !23! !456! xax'
Παράδειγμα
Ας λύσουμε το ακόλουθο πρόβλημα: δίνεται μια συμβολοσειρά
'aaa@bbb ccc@ddd' - γράμματα, μετά
@, μετά γράμματα. Πρέπει να ανταλλάξουμε τις θέσεις
των γραμμάτων στην υποσυμβολοσειρά 'aaa@bbb' πριν
από το '@' και μετά:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
Ως αποτέλεσμα, στη μεταβλητή θα καταγραφεί το εξής:
'bbb@aaa ccc@ddd'
Πρακτικά Προβλήματα
Δίνεται η συμβολοσειρά:
txt = '12 34 56 78'
Ανταλλάξτε τις θέσεις των ψηφίων σε όλους τους διψήφιους αριθμούς.
Δίνεται μια συμβολοσειρά με ημερομηνία:
txt = '31.12.2025'
Μετατρέψτε αυτήν την ημερομηνία σε '2025.12.31'.