Η μέθοδος finditer της μονάδας re
Η μέθοδος finditer της μονάδας re
επιστρέφει έναν επαναλήπτη όλων των αντιστοιχίσεων με κανονική έκφραση
σε μια συμβολοσειρά. Στην πρώτη παράμετρο της μεθόδου καθορίζουμε
την κανονική έκφραση. Στη δεύτερη παράμετρο ορίζουμε
τη συμβολοσειρά, στην οποία ψάχνουμε την κανονική έκφραση. Στην τρίτη
προαιρετική παράμετρο μπορούμε να ορίσουμε σημαίες.
Η μέθοδος ελέγχει όλες τις αντιστοιχίσεις, ψάχνοντάς τες
από αριστερά προς τα δεξιά.
Σύνταξη
import re
re.finditer(κανονική_έκφραση, συμβολοσειρά, [σημαίες])
Παράδειγμα
Ας βρούμε όλες τις υποσυμβολοσειρές με ψηφία στην συμβολοσειρά μας:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)
print(res)
Αποτέλεσμα εκτέλεσης του κώδικα:
<callable_iterator object at 0x000002AA891300A0>
Παράδειγμα
Τώρα ας δηλώσουμε τη μεταβλητή res,
της οποίας η τιμή θα είναι το αντικείμενο που λάβαμε
στο προηγούμενο παράδειγμα. Στη συνέχεια, θα το επαναλάβουμε
με έναν βρόγχο:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)
for el in res:
print(el)
Μετά την εκτέλεση του κώδικα θα λάβουμε δύο αντικείμενα Match object:
<re.Match object; span=(5, 8), match='123'>
<re.Match object; span=(14, 17), match='456'>
Αυτά τα αντικείμενα περιέχουν πληροφορίες για όλες τις αντιστοιχίσεις με την κανονική έκφραση σε μορφή πλειάδας. Μπορούμε να εξάγουμε από αυτές τις αντιστοιχίσεις ανάλογα με το ευρετήριο:
for el in res:
print(el[0])
Αποτέλεσμα εκτέλεσης του κώδικα:
'123'
'456'
Παράδειγμα
Για μεγαλύτερη σαφήνεια, ας χρησιμοποιήσουμε κατά την αναζήτηση αντιστοιχίσεις ομάδες (capturing groups). Και κατά την επανάληψη των αντικειμένων του βρόγχου, ας εκτυπώσουμε την πρώτη αντιστοίχιση (θα θεωρηθεί ως η μηδενική ομάδα), καθώς και τα στοιχεία της, τα οποία με τη σειρά τους κατανέμονται σε ομάδες:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('(\d)(\d)', txt)
for el in res:
print(el[0], el[1], el[2])
Μετά την εκτέλεση του κώδικα θα λάβουμε τη μηδενική ομάδα, δηλαδή ολόκληρη την υποσυμβολοσειρά, καθώς και τον πρώτο και τον δεύτερο χαρακτήρα από αυτήν την υποσυμβολοσειρά:
'12' '1' '2'
'45' '4' '5'
Δείτε επίσης
-
η μέθοδος
findallτης μονάδαςre,
που επιστρέφει μια λίστα με όλες τις αντιστοιχίσεις σε μια συμβολοσειρά -
η μέθοδος
searchτης μονάδαςre,
που αναζητά την πρώτη αντιστοίχιση με κανονική έκφραση σε μια συμβολοσειρά -
η μέθοδος
matchτης μονάδαςre,
που αναζητά αντιστοίχιση με κανονική έκφραση στην αρχή της συμβολοσειράς -
η μέθοδος
fullmatchτης μονάδαςre,
που αναζητά όλες τις αντιστοιχίσεις με κανονική έκφραση σε μια συμβολοσειρά -
το αντικείμενο
Match objectτης μονάδαςre,
που περιέχει πληροφορίες για αντιστοιχίσεις με κανονική έκφραση -
η μέθοδος
splitτης μονάδαςre,
που διαχωρίζει μια συμβολοσειρά σε λίστα βάσει του καθορισμένου διαχωριστικού