Η συνάρτηση findall()
Η συνάρτηση findall() επιστρέφει μια λίστα που περιέχει όλες τις αντιστοιχίες.
Παράδειγμα:
import re κείμενο = "Το κατάστημα έχει 12 μήλα, 24 πορτοκάλια και 35 μπανάνες" συνθήκη = r"\d+" αποτέλεσμα = re.findall(συνθήκη, κείμενο) print("Τα αποτελέσματα είναι:", αποτέλεσμα)
Το αποτέλεσμα θα είναι:
Τα αποτελέσματα είναι: ['12', '24', '35']
Στο παράδειγμα αυτό, η συνάρτηση findall() επιστρέφει μια λίστα με όλες τις αντιστοιχίες των αριθμών που βρίσκονται μέσα στο κείμενο. Η συνθήκη r”\d+” ψάχνει για ένα ή περισσότερα ψηφία στη σειρά.
Η λίστα περιέχει τις αντιστοιχίες με τη σειρά που βρίσκονται.
Εάν δεν βρεθούν αντιστοιχίες, επιστρέφεται μια κενή λίστα:
Παράδειγμα
Επιστρέψτε μια κενή λίστα εάν δεν βρεθεί καμία αντιστοιχία:
import re κείμενο = "Το κατάστημα έχει μήλα, πορτοκάλια και μπανάνες" συνθήκη = r"\d+" αποτέλεσμα = re.findall(συνθήκη, κείμενο) print("Τα αποτελέσματα είναι:", αποτέλεσμα)
Το αποτέλεσμα θα είναι:
Τα αποτελέσματα είναι: []
Στο παράδειγμα αυτό, καθώς δεν υπάρχουν αριθμοί μέσα στο κείμενο, η συνάρτηση findall() επιστρέφει μια κενή λίστα.
Η συνάρτηση search() αναζητά αντιστοιχία μέσα στο κείμενο και επιστρέφει ένα αντικείμενο Match αν βρεθεί αντιστοιχία.
[adinserter block=”2″]
Εάν υπάρχει περισσότερες από μία αντιστοιχίες, μόνο η πρώτη εμφάνιση της αντιστοιχίας θα επιστραφεί:
import re κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" συνθήκη = r"\d+" αποτέλεσμα = re.search(συνθήκη, κείμενο) if αποτέλεσμα: print("Η πρώτη αντιστοιχία είναι:", αποτέλεσμα.group()) else: print("Δεν βρέθηκε αντιστοιχία")
Το αποτέλεσμα θα είναι:
Η πρώτη αντιστοιχία είναι: 2500
Στο παράδειγμα αυτό, παρόλο που υπάρχουν δύο αριθμοί στο κείμενο, η συνάρτηση search() επιστρέφει μόνο την πρώτη αντιστοιχία.
Εάν δεν βρεθούν αντιστοιχίες, επιστρέφεται η τιμή None:
Παράδειγμα
Κάντε μια αναζήτηση που δεν επιστρέφει αντιστοιχία:
import re κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" συνθήκη = r"Δεν υπάρχει αντιστοιχία" αποτέλεσμα = re.search(συνθήκη, κείμενο) if αποτέλεσμα: print("Η πρώτη αντιστοιχία είναι:", αποτέλεσμα.group()) else: print("Δεν βρέθηκε αντιστοιχία")
Το αποτέλεσμα θα είναι:
Δεν βρέθηκε αντιστοιχία
Η συνάρτηση split() επιστρέφει μια λίστα όπου το κείμενο έχει διαχωριστεί σε κάθε αντιστοιχία:
Παράδειγμα:
import re κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" συνθήκη = r"\d+" αποτέλεσμα = re.split(συνθήκη, κείμενο) print(αποτέλεσμα)
Το αποτέλεσμα θα είναι:
['Η Άννα καταναλώνει ', ' θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει ', ' θερμίδες']
Μπορείτε να ελέγξετε τον αριθμό των επαναλήψεων προσδιορίζοντας την παράμετρο maxsplit:
Παράδειγμα
Διαχωρίστε το κείμενο μόνο στην πρώτη αντιστοιχία:
import re κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" συνθήκη = r"\d+" αποτέλεσμα = re.split(συνθήκη, κείμενο, maxsplit=1) print(αποτέλεσμα)
Το αποτέλεσμα θα είναι:
['Η Άννα καταναλώνει ', ' θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες']
Η συνάρτηση sub() αντικαθιστά τις αντιστοιχίες με το κείμενο της επιλογής σας:
[adinserter block=”3″]
Παράδειγμα:
import re κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες" συνθήκη = r"\d+" αντικατάσταση = "X" αποτέλεσμα = re.sub(συνθήκη, αντικατάσταση, κείμενο) print(αποτέλεσμα)
Το αποτέλεσμα θα είναι:
'Η Άννα καταναλώνει X θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει X θερμίδες'
Μπορείτε να ελέγξετε τον αριθμό των αντικαταστάσεων καθορίζοντας την παράμετρο count:
Παράδειγμα:
import re κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει 3000 θερμίδες και ο Νίκος 2000 θερμίδες" συνθήκη = r"\d+" αντικατάσταση = "X" αποτέλεσμα = re.sub(συνθήκη, αντικατάσταση, κείμενο, count=2) print(αποτέλεσμα)
Το αποτέλεσμα θα είναι:
'Η Άννα καταναλώνει X θερμίδες κάθε μέρα, ενώ ο Γιώργος καταναλώνει X θερμίδες και ο Νίκος 2000 θερμίδες'
Ένα αντικείμενο Match είναι ένα αντικείμενο που περιέχει πληροφορίες για την αναζήτηση και το αποτέλεσμα.
Σημείωση: Εάν δεν υπάρχει αντιστοίχιση, η τιμή None θα επιστραφεί αντί για το αντικείμενο Match.
Παράδειγμα:
Κάντε μια αναζήτηση που θα επιστρέψει ένα αντικείμενο Match:
import re κείμενο = "Η Άννα καταναλώνει 2500 θερμίδες κάθε μέρα" συνθήκη = r"\d+" αντιστοίχιση = re.search(συνθήκη, κείμενο) print(αντιστοίχιση)
Το αποτέλεσμα θα είναι κάτι σαν:
<re.Match object; span=(18, 22), match='2500'>
Το αντικείμενο Match έχει ιδιότητες και μεθόδους που χρησιμοποιούνται για να ανακτήσουν πληροφορίες σχετικά με την αναζήτηση και το αποτέλεσμα:
- .span() επιστρέφει μια πλειάδα που περιέχει τις αρχικές και τις τελικές θέσεις της αντιστοίχισης.
- .string επιστρέφει το string που περάστηκε στη συνάρτηση
- .group() επιστρέφει το μέρος του string όπου υπήρξε αντιστοίχιση
Παράδειγμα:
Εκτυπώστε τη θέση (αρχική και τελική θέση) της πρώτης εμφάνισης αντιστοίχισης.
Η κανονική έκφραση αναζητά λέξεις που αρχίζουν με κεφαλαίο “S”:
import re κείμενο = "Η Σόφια και ο Στέφανος παίζουν στο πάρκο" συνθήκη = r"\bS\w+" αντιστοίχιση = re.search(συνθήκη, κείμενο) αρχή, τέλος = αντιστοίχιση.span() print(f"Η θέση της αντιστοίχισης: Αρχή {αρχή}, Τέλος {τέλος}")
Το αποτέλεσμα θα είναι κάτι σαν:
Η θέση της αντιστοίχισης: Αρχή 2, Τέλος 8
Παράδειγμα:
Εκτυπώστε το string που περάστηκε στη συνάρτηση:
import re κείμενο = "Η Σόφια και ο Στέφανος παίζουν στο πάρκο" συνθήκη = r"\bS\w+" αντιστοίχιση = re.search(συνθήκη, κείμενο) εισαγωγικό_κείμενο = αντιστοίχιση.string print(f"Το εισαγωγικό κείμενο είναι: {εισαγωγικό_κείμενο}")
Το αποτέλεσμα θα είναι:
Το εισαγωγικό κείμενο είναι: Η Σόφια και ο Στέφανος παίζουν στο πάρκο
Παράδειγμα:
Εκτυπώστε το τμήμα του string όπου υπήρξε αντιστοίχιση.
Η κανονική έκφραση αναζητά λέξεις που ξεκινούν με κεφαλαίο “S”:
import re κείμενο = "Η Σόφια και ο Στέφανος παίζουν στο πάρκο" συνθήκη = r"\bS\w+" αντιστοίχιση = re.search(συνθήκη, κείμενο) τμήμα_αντιστοίχισης = αντιστοίχιση.group() print(f"Το τμήμα της αντιστοίχισης είναι: {τμήμα_αντιστοίχισης}")
Το αποτέλεσμα θα είναι:
Το τμήμα της αντιστοίχισης είναι: Σόφια