7 moduri de a verifica dacă un șir Python conține un subșir

Lucrul cu șiruri de caractere este o sarcină comună în Python. De multe ori trebuie să vă dați seama dacă un șir conține un alt șir.

Cele mai simple metode de a verifica dacă un șir Python conține un subșir includ operatorul „in”, funcția find() și metoda index(). Scenariile mai complexe pot fi rezolvate cu expresii regulate sau cu o bibliotecă externă precum Pandas.

Acest articol vă arată:

  • patru metode simple

  • două funcții regex mai complexe

  • o metodă care utilizează biblioteca Pandas

Veți învăța fiecare tehnică prin exemple de sintaxa și utilizarea lor. Veți primi, de asemenea, sfaturi despre care metodă este cea mai bună pentru diferite cerințe.

Să începem!

Cuprins

Elementele de bază ale șirurilor Python

Un șir în Python este o secvență de caractere care este folosită pentru a reprezenta date bazate pe text. Acestea pot include litere, cifre, simboluri și spații albe.

Este unul dintre tipurile de date încorporate din Python și poate fi creat folosind fie:

  • ghilimele simple (' ')

  • ghilimele duble (" ")

  • ghilimele triple ("""" sau """ "")

Șirurile sunt indexate, ceea ce înseamnă că puteți accesa anumite caractere făcând referire la numărul lor de index. Indicele de pornire este 0, ceea ce înseamnă că primul caracter al unui șir are un indice de 0, al doilea are un indice de 1 și așa mai departe.

În continuare, ne uităm la modalități de a verifica dacă există subșiruri.

Cele mai simple 4 moduri de a verifica dacă există subșiruri

Python oferă multe modalități de a verifica dacă un anumit subșir există într-un șir mai mare. Unele sunt mai complexe decât altele. Pentru cele mai de bază verificări, cele mai simple metode sunt operatorul in sau una din cele trei metode de șir.

  1. în operator

  2. metoda find().

  3. metoda index().

  4. metoda count().

7 moduri de a verifica dacă un șir Python conține un subșir

1. În Operator

Operatorul „in” din Python este o modalitate simplă și intuitivă de a verifica dacă un șir există într-un alt șir. Acest operator verifică apartenența și returnează o valoare booleană:

  • Adevărat dacă subșirul este găsit în șirul principal

  • Fals dacă nu este

Iată un exemplu de cod:

s = "Hello, world!"
sub = "world"
result = sub in s
print(result)  # Output: True

Operatorul „în” este sensibil la majuscule. Aceasta înseamnă că tratează caracterele litere mici și majuscule ca fiind diferite. Codul de mai sus nu va găsi subșirul „hello”, așa că operatorul returnează false.

Dacă doriți să efectuați o verificare care nu ține seama de majuscule și minuscule, puteți converti atât șirul principal, cât și subșirul în aceeași literă înainte de a efectua verificarea:

s = "Hello, world!"
sub = "hello"
result = sub.lower() in s.lower()
print(result)  # Output: True

Dezavantajul operatorului in este că nu furnizează poziția subșirului în șirul principal. Pentru asta, ai avea nevoie de o altă metodă în această secțiune. Citește mai departe…

2. Metoda Find().

Metoda find() returnează primul index la care apare subșirul sau -1 dacă subșirul nu este găsit.

Apelați metoda find() pe un șir s , trecând subșirul sub drept argument. Iată un exemplu:

s = "Hello, world!"
sub = "world"
index = s.find(sub)

if index != -1:
     print("Found at index:", index)  # Output: Found at index: 7
else:
     print("Not found")

Puteți specifica opțional un index de început sau de sfârșit pentru a vă limita căutarea. Dezavantajul acestei metode este că se oprește la prima apariție.

3. Metoda Index().

Metoda index() este destul de similară cu metoda find() , cu excepția faptului că generează o valoare ValueError atunci când subșirul nu este găsit. Aceasta înseamnă că ar trebui să încheiați apelul într-o secțiune Try/Except.

Pentru a utiliza metoda index() , apelați-o pe un șir s și treceți subșirul sub ca argument.

s = "Hello, world!"
sub = "world"

try: 
     index = s.index(sub)
     print("Found at index:", index)  # Output: Found at index: 7
except ValueError:
     print("Not found")

Această metodă se oprește și la primul subșir din text.

4. Metoda Count().

Metoda .count() numără de câte ori apare un subșir în șirul original. Returnează un număr întreg care reprezintă acest număr. Dacă subșirul nu este găsit în șirul principal, returnează 0.

Iată un exemplu simplu care caută litera „o” în textul „Bună, lume!”:

s = "Hello, world!"
sub = "o"
print(s.count(sub))  # Output:2

2 moduri de a potrivi șirurile cu expresii regulate

Utilizarea expresiilor regulate (regex) este puțin mai complexă decât metodele din secțiunea anterioară. Cu toate acestea, vă oferă mai multe opțiuni pentru căutarea și analiza textului cu care aveți de-a face.

Două dintre cele mai ușoare moduri din cadrul modulului re sunt:

  1. căutare()

  2. Găsiți toate()

7 moduri de a verifica dacă un șir Python conține un subșir

1. re.Căutare()

Funcția search () din modulul re caută un model într-un șir dat și returnează un obiect potrivire dacă este găsită o potrivire. În caz contrar, returnează None .

În mod implicit, funcția face distincție între majuscule și minuscule. Puteți utiliza marcatorul re.IgnoreCase pentru a evita sensibilitatea cu majuscule și minuscule.

Iată un exemplu simplu care utilizează instrucțiuni condiționale în funcție de faptul dacă șirul este găsit:

import re
pattern = "python"
text = "I love Python programming"
match = re.search(pattern, text, re.IGNORECASE)

if match: 
     print("Pattern found")
else:
     print("Pattern not found")

Rețineți că această metodă găsește prima potrivire și apoi oprește căutarea. Dacă doriți să găsiți toate potrivirile, atunci următorul din această listă este pentru dvs.

2. re.Findall()

Această metodă găsește toate aparițiile unui model de căutare într-un șir dat și returnează o listă care conține toate potrivirile.

Acest exemplu folosește un model care se potrivește cu una sau mai multe cifre dintr-un șir. Șirul de text „123, 456, 789” conține trei secvențe de cifre.

import re 

pattern = "d+" 
text = "123, 456, 789" 
numbers = re.findall(pattern, text) 

print(numbers)

Acesta este răspunsul din exemplul de cod: ['123', '456', '789'].

Cum să găsiți subșiruri cu panda

7 moduri de a verifica dacă un șir Python conține un subșir

Pandas este o bibliotecă populară de analiză și manipulare a datelor open-source pentru Python. Oferă structuri de date și funcții necesare pentru a manipula și analiza datele structurate.

Una dintre structurile de date primare furnizate de Pandas este DataFrame. Puteți utiliza această structură de date versatilă pentru a verifica dacă există un șir în altul.

Avantajul Pandas este că oferă pachete de cod pe care ar trebui să le scrieți pe larg în alte limbaje de programare. Mai exact, în interiorul funcției conține o mulțime de putere.

str.contains() Funcția în Pandas

Metoda str.contains() testează dacă un model specificat sau o expresie regulată este conținută într-un șir al unei coloane DataFrame.

Iată un exemplu care importă biblioteca și caută un șir într-o listă de șiruri:

import pandas as pd

# Creating a sample DataFrame 
data = {'fruits': ['apple', 'banana', 'cherry', 'watermelon', 'orange']} 
df = pd.DataFrame(data) 

# Searching for substrings in the 'fruits' column 
has_an = df['fruits'].str.contains(pat='an', regex=False)

# Filtering the DataFrame based on the search results 
filtered_df = df[has_an] 
print(filtered_df)

În acest exemplu, căutăm subșirul „an” în coloana „fructe” și filtrăm DataFrame în consecință. Ieșirea ar fi:

  • 1 banană

  • 4 portocale

Dacă cauți mai multe exemple de ceea ce pot face Pandas, vezi acest videoclip:

Sfaturi pentru alegerea unei metode specifice în Python

Alegerea metodei depinde în mare măsură de cerințele specifice ale sarcinii dumneavoastră.

Iată patru motive pentru a alege una dintre metodele pe care le-ați învățat din acest articol, plus o metodă bonus pe care o veți învăța în altă parte pe acest blog:

  1. Viteza de procesare

  2. Trebuie să știți locația subșirului

  3. Trebuie să știți numărul de apariții ale subșirului

  4. Vrei să potriviți modele complexe

  5. Efectuarea analizei de text

1. Viteza procesării

7 moduri de a verifica dacă un șir Python conține un subșir

Operatorul „în” este cea mai bună alegere dacă doriți pur și simplu să știți dacă există un subșir într-un șir.

Este simplu, intuitiv și rapid în acest scop. Cu toate acestea, nu oferă informații despre locația sau numărul subșirului.

2. Locația subșirului

Utilizați metodele .find() sau .index() dacă trebuie să cunoașteți poziția primei apariții a unui subșir în cadrul unui șir.

Ambele returnează indexul primei apariții a subșirului.

3. Numărarea subșirului

Utilizați metoda .count() când doriți să știți de câte ori apare un subșir într-un șir.

4. Modele complexe

Dacă trebuie să potriviți modele complexe sau să efectuați căutări care nu țin cont de majuscule, expresiile regulate sunt cele mai flexibile. Funcția re.search() poate gestiona modele dincolo de simple subșiruri și poate efectua cu ușurință căutări care nu țin cont de majuscule.

Cu toate acestea, expresiile regulate pot fi exagerate pentru verificări simple ale subșirurilor și pot fi, de asemenea, mai lente și mai complexe de utilizat și întreținut.

5. Efectuarea analizei textului

Consultați articolul nostru despre analiza textului în Python , care vă arată cum să lucrați cu biblioteca textblob.

Puteți utiliza funcția .tags pentru a verifica părțile de vorbire sau funcția .ngram pentru a găsi cuvinte care apar frecvent împreună într-un document.

Gânduri finale

Ați învățat șapte metode pentru a verifica dacă un cuvânt sau un șir de obiect este conținut în altul. Acestea au inclus operatori de membru, funcții încorporate, regex și funcții Pandas.

Fiecare metodă este corectă pentru unele situații, dar nu pentru toate. Utilizați acest articol ca o foaie de cheat în timp ce stăpâniți limbajul de programare Python și utilizați cea mai bună soluție pentru sarcina dvs. de analiză a șirurilor.

Amintiți-vă, nu există o metodă unică pentru toate. Fiecare abordare are propriile sale avantaje și ciudatenii, așa că nu ezitați să o alegeți pe cea care se potrivește stilului dvs. sau problemei specifice pe care încercați să o rezolvați. La sfârșitul zilei, Python înseamnă să-ți faci viața mai ușoară, așa că îmbrățișează-i flexibilitatea!

Leave a Comment

Ce este Sinele în Python: Exemple din lumea reală

Ce este Sinele în Python: Exemple din lumea reală

Ce este Sinele în Python: Exemple din lumea reală

Cum să salvați și să încărcați un fișier RDS în R

Cum să salvați și să încărcați un fișier RDS în R

Veți învăța cum să salvați și să încărcați obiecte dintr-un fișier .rds în R. Acest blog va trata, de asemenea, cum să importați obiecte din R în LuckyTemplates.

Primele N zile lucrătoare revizuite – O soluție de limbaj de codare DAX

Primele N zile lucrătoare revizuite – O soluție de limbaj de codare DAX

În acest tutorial despre limbajul de codare DAX, aflați cum să utilizați funcția GENERATE și cum să schimbați în mod dinamic titlul unei măsuri.

Prezentați perspective utilizând tehnica vizuală dinamică cu mai multe fire în LuckyTemplates

Prezentați perspective utilizând tehnica vizuală dinamică cu mai multe fire în LuckyTemplates

Acest tutorial va acoperi cum să utilizați tehnica Multi Threaded Dynamic Visuals pentru a crea informații din vizualizările dinamice de date din rapoartele dvs.

Introducere la filtrarea contextului în LuckyTemplates

Introducere la filtrarea contextului în LuckyTemplates

În acest articol, voi trece prin contextul filtrului. Contextul de filtrare este unul dintre subiectele majore despre care orice utilizator LuckyTemplates ar trebui să învețe inițial.

Cele mai bune sfaturi pentru utilizarea aplicațiilor din serviciul online LuckyTemplates

Cele mai bune sfaturi pentru utilizarea aplicațiilor din serviciul online LuckyTemplates

Vreau să arăt cum serviciul online LuckyTemplates Apps poate ajuta la gestionarea diferitelor rapoarte și informații generate din diverse surse.

Analizați modificările marjei de profit ore suplimentare – Analytics cu LuckyTemplates și DAX

Analizați modificările marjei de profit ore suplimentare – Analytics cu LuckyTemplates și DAX

Aflați cum să vă calculați modificările marjei de profit folosind tehnici precum măsurarea ramificării și combinarea formulelor DAX în LuckyTemplates.

Idei de materializare pentru cache-urile de date în DAX Studio

Idei de materializare pentru cache-urile de date în DAX Studio

Acest tutorial va discuta despre ideile de materializare a cache-urilor de date și despre modul în care acestea afectează performanța DAX-ului în furnizarea de rezultate.

Raportare de afaceri folosind LuckyTemplates

Raportare de afaceri folosind LuckyTemplates

Dacă încă utilizați Excel până acum, atunci acesta este cel mai bun moment pentru a începe să utilizați LuckyTemplates pentru nevoile dvs. de raportare a afacerii.

Ce este LuckyTemplates Gateway? Tot ce trebuie să știți

Ce este LuckyTemplates Gateway? Tot ce trebuie să știți

Ce este LuckyTemplates Gateway? Tot ce trebuie să știți