Acest articol are scopul de a facilita cursanților o înțelegere aprofundată a conceptului de subșiruri în limbajul de programare Python.
Veți deprinde modalități de a crea subșiruri, de a selecta diverse secțiuni din cadrul unui șir și de a înțelege mecanismele subșirurilor în Python, folosind exemple practice pentru a ilustra aceste aspecte. De asemenea, vom explora cum să determinăm dacă un subșir este prezent într-un șir mai mare.
Înainte de a începe, este crucial să înțelegem noțiunile de șir și subșir. Un șir este o succesiune de caractere Unicode, incluzând litere, cifre și/sau simboluri speciale. Un subșir poate fi definit ca o parte a acestei secvențe de caractere dintr-un șir.
Vom analiza următoarele subiecte:
- Procesul de creare a unui subșir.
- Tehnici de extragere a subșirurilor.
- Calculul aparițiilor unui subșir.
- Metode de identificare a prezenței unui subșir într-un șir.
Să începem!
Crearea unui Subșir
Un subșir se creează frecvent prin tehnica feliilor (slicing). Această metodă permite extragerea subșirului prin specificarea indicilor de început, sfârșit și pas. Acești indicatori permit selectarea exactă a caracterelor dorite, specificând pozițiile lor.
Sintaxa este următoarea:
string[indice_inceput: indice_sfarsit: pas]
Rețineți că numerotarea pozițiilor caracterelor într-un șir începe de la zero.
Parametrul indice_inceput marchează poziția de start a subșirului. Dacă acest element lipsește la feliere, Python atribuie automat valoarea zero.
Indice_sfarsit reprezintă ultimul index al subșirului. Dacă nu este specificat, metoda slicing consideră că valoarea sa este egală cu lungimea șirului.
Pas: Determină următorul caracter ce va fi inclus în subșir, după cel curent. În mod implicit, această valoare este unu. Când parametrul pas este omis, valoarea sa este implicit considerată unu.
Modalități de Extragere a Subșirurilor
Există diverse metode prin care putem obține un subșir dintr-un șir. Printre acestea se numără:
#1. Felierea folosind indicele de început și cel de sfârșit.
String = string[indice_inceput : indice_sfarsit]
Într-un scenariu în care doriți să extrageți prenumele dintr-un nume complet, implementarea va fi astfel:
string = 'Michael Doe' print(string[0:7])
Rezultatul va fi:
Michael
#2. Felierea folosind indicele de început, fără cel de sfârșit.
String= string[indice_inceput:]
Aici indicăm doar poziția de unde dorim să începem extragerea caracterelor, preluând subșirul până la finalul șirului, care de obicei are indicele -1.
Exemplu:
string = 'This is to demonstrate slicing of a string using the begin-index without the end-index' print(string[7:])
Ieșire:
to demonstrate slicing of a string using the begin-index without the end-index
#3. Felierea folosind indicele de sfârșit, fără cel de început.
String = string[:indice_sfarsit]
În acest caz, specificăm ultimul caracter inclus în subșir, omitând de unde să începem. Astfel, felierea va genera un subșir începând cu poziția zero a șirului.
Exemplu:
string = 'This is to demonstrate slicing of a string using the end-index without the begin-index' print(string[:9])
Ieșire:
This is t
#4. Felierea întregului șir.
String = string[ : ]
Aici, nefiind identificați niciunul dintre indicatori, este returnat întregul șir.
Exemplu
string = 'This is to demonstrate slicing of the entire string' print(string[:])
Ieșire:
This is to demonstrate slicing of the entire string
#5. Extragerea unui singur caracter dintr-un șir.
String = string[indice]
Se extrage un caracter specific al șirului, corespunzător unui index precis.
Exemplu:
string = 'This is to demonstrate slicing of a single character from a string' print(string[8])
Va afișa litera „t” din cuvântul „to”, deoarece poziția sa este 8.
#6. Felierea folosind indicele de început, cel de sfârșit și pasul.
Exemplu
string = 'This is to demonstrate slicing of the string using the begin-index, step, and end-index' print(string[11:24:1])
Când pasul este 1, are loc o feliere standard și rezultatul este următorul.
demonstrate s
Folosind același exemplu, setăm pasul la 2.
string = 'This is to demonstrate slicing of the string using the begin-index, step, and end-index' print(string[11:24:2])
Extragerea caracterelor se va face din 2 în 2.
dmntaes
Felierea selectează al doilea caracter după cel curent. Astfel, feliile demonstrează s la Dmntaes.
#7. Inversarea unui șir folosind un pas negativ.
În acest scenariu, șirul va fi afișat de la ultimul caracter către primul.
string = 'This is to demonstrate reversing string using the negative step' print(string[::-1])
Ieșire:
pets evitagen eht gnisu gnirts gnisrever etartsnomed ot si sihT
Pasul negativ funcționează în felul următor:
R
E
V
E
R
S
E
0
1
2
3
4
5
6
-6
-5
-4
-3
-2
-1
În șirul inversat de mai sus, indexul de început este 0 implicit, și se termină cu 6. Pasul negativ inversează indicele ultimului caracter, aplicându-l primului și anulând această valoare.
Mai multe exemple de feliere:
Extragerea primelor patru caractere dintr-un șir.
string = 'characters' print(string[0:4])
Rezultatul va fi:
char
Determinarea Prezenței unui Subșir Într-un Șir
Python utilizează funcția `find()` sau operatorul „in” pentru a confirma existența unui subșir într-un șir.
Un exemplu cu operatorul „in”:
string = 'this is to demonstrate that a particular substring is found in a string ' if 'find' in string: print('The substring is found') else: print('Could not find the substring defined')
Ieșire:
Could not find the substring defined
Exemplul de mai sus verifică dacă subșirul „find” se află în șirul specificat. Deoarece subșirul nu se găsește, rezultatul este cel afișat.
Dacă înlocuim subșirul „find” cu „that” și verificăm prezența acestuia în șir, rezultatul va fi „subșirul este găsit”, deoarece se află în interiorul șirului.
Un exemplu cu funcția `find()`:
string = 'using string to find if a substring is present in a string' if string.find('found') != -1: print("The substring 'found' exists") else: print("The substring 'found' does not exist")
Ieșire:
The substring 'found' does not exist
În acest exemplu, am încercat să găsim un subșir care nu este inclus în șir. Funcția `find()` examinează întregul șir și, cum subșirul „found” nu este identificat, rezultatul afișat este „Subșirul ‘found’ nu există”.
Calculul Numărului de Apariții ale unui Subșir
Python folosește funcția `count()` pentru a determina frecvența apariției unui subșir, așa cum se arată în exemplul de mai jos.
string = " Counting the number of occurrences of 'o' in this string " print("The 'o' substring count is: ",string.count('o'));
Ieșire:
The 'o' substring count is: 5
Concluzie
Acest articol ar trebui să vă ofere o înțelegere mai clară a subșirurilor în Python, cum să le creați și să explice conceptul de slicing și cum să-l folosiți. Prin intermediul exemplelor furnizate, exersați mai multe situații pentru a înțelege complet acest concept.
De asemenea, puteți învăța cum să construiți un joc de ghicire a numerelor folosind Python sau cum să obțineți date JSON cu Python.
Spor la programare!