Cum se utilizează metoda split() în Python

În acest ghid, vei explora cum funcționează metoda `split()` în Python, folosită pentru a descompune un șir de caractere într-o colecție ordonată de subșiruri.

Când manipulezi șiruri de caractere în Python, ai la dispoziție numeroase funcții predefinite pentru a le modifica, cum ar fi conversia la majuscule, ordonarea alfabetică și multe altele. Metoda `.split()` este una dintre aceste funcții, permițând fragmentarea unui șir într-o listă de subșiruri. Vom detalia funcționalitatea ei prin exemple practice.

După parcurgerea acestui ghid, vei dobândi cunoștințe despre:

  • mecanismul de funcționare al metodei `.split()`;
  • adaptarea procesului de fragmentare prin parametrii `sep` și `maxsplit`.

Să începem explorarea!

Structura metodei `split()` în Python

Iată forma generală de utilizare a metodei `split()` pe un șir de caractere valid în Python:

string.split(sep, maxsplit)

# Parametri:
sep, maxsplit

# Returnează:
O listă de șiruri de caractere

În această structură, `string` reprezintă orice șir de caractere valid în Python.

Parametrii `sep` și `maxsplit` sunt opționali.

  • `sep` indică separatorul, adică șirul de caractere după care se va face fragmentarea. Acesta trebuie specificat ca șir.
  • `maxsplit` reprezintă un număr întreg care stabilește de câte ori se va efectua divizarea șirului.

Dacă nu sunt specificați, se vor folosi valorile lor implicite.

  • Dacă parametrul `sep` nu este explicit furnizat, spațiul alb este folosit ca separator implicit.
  • Dacă nu este specificată o valoare pentru `maxsplit`, valoarea implicită este -1, ceea ce înseamnă că șirul va fi fragmentat la fiecare apariție a separatorului.

Exprimând sintaxa într-un mod simplu:

Metoda `split()` fragmentează un șir de un număr maxim de `maxsplit` ori, la fiecare apariție a separatorului definit de parametrul `sep`.

Acum, că am înțeles sintaxa metodei `split()`, putem trece la exemple de cod.

Transformarea unui șir Python într-o listă de subșiruri

Dacă ai Python 3 instalat, poți testa exemplele de cod din acest ghid executându-le într-un interpretor Python (REPL).

Pentru a iniția interpretorul REPL, rulează una dintre următoarele comenzi în terminal:

$ python
$ python -i

▶️ De asemenea, poți experimenta cu aceste exemple în editorul Python de pe tipstrick.ro.

În următorul exemplu, `py_str` este un șir de caractere în Python. Vom apela metoda `.split()` pe `py_str` fără parametri și vom analiza rezultatul.

py_str = "Învață cum să folosești split() în Python"
py_str.split()

# Ieșire
['Învață', 'cum', 'să', 'folosești', 'split()', 'în', 'Python']

Observăm că șirul a fost fragmentat la fiecare apariție a spațiului alb.

Fragmentarea unui șir Python după separatori

#1. Pentru început, vom fragmenta șirul `py_str` folosind două linii de subliniere (`__`) ca separator.

py_str = "Toate__cele__bune"
py_str.split(sep='__')

# Ieșire
['Toate', 'cele', 'bune']

#2. Într-un alt exemplu, `py_str` conține trei propoziții, fiecare terminată cu punct (`.`).

py_str = "Îmi place să programez. Python este cool. Învăț Python în 2023"
py_str.split(sep='.')

# Ieșire
['Îmi place să programez', ' Python este cool', " Învăț Python în 2023"]

▶️ Apelând metoda `.split()` cu `’.’` ca separator, obținem o listă cu cele trei propoziții.

#3. Să ne punem câteva întrebări:

  • Ce se întâmplă dacă separatorul nu este prezent în șir?
  • Cum se va desfășura fragmentarea în acest caz?

Iată un exemplu:

Vom încerca să fragmentăm `py_str` la apariția asteriscului

py_str = "Această linie nu conține asterisc."
py_str.split(sep='*')

# Ieșire
['Această linie nu conține asterisc.']

— care nu are loc.

În acest caz, deoarece nu se poate face nicio divizare, lista rezultată va conține întregul șir inițial.

În continuare, vom vedea cum putem folosi metoda `split()` pe conținutul unui fișier text.

Fragmentarea conținutului unui fișier text în Python

Când lucrezi cu fișiere text, s-ar putea să fie necesar să fragmentezi conținutul acestora după un anumit separator, pentru a facilita prelucrarea.

Iată un exemplu de fișier text:

with open('exemplu.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

Fragmentul de cod de mai jos ilustrează utilizarea metodei `split` pe conținutul fișierului `exemplu.txt`.

  • Codul execută următoarele acțiuni:
  • Utilizează un manager de context pentru a deschide și lucra cu fișierul text „exemplu.txt”.
  • Citește conținutul fișierului folosind metoda `.read()` pe obiectul fișier `f`.
  • Fragmentează conținutul după apariția separatorului format din puncte de suspensie (`…`), stocând rezultatul în lista `str_list`.

Parcurge lista `str_list` pentru a accesa și afișa fiecare subșir.

# Ieșire
Acesta este un fișier text exemplu
Conține informații despre
Începerea cu <a href="https://tipstrick.ro.com/pcap-certification/">programarea în Python</a>
Conform sondajului StackOverflow Developer din 2022
Python este unul dintre cele mai apreciate limbaje de programare
Deci ce mai aștepți? Începe să înveți!

Acesta este rezultatul.

Ca exercițiu, poți încerca să fragmentezi conținutul unui fișier text după orice separator dorești.

Fragmentarea unui șir Python în segmente

O fragmentare a unui șir va crea două segmente; două fragmentări vor genera trei segmente.

📋 În general, K fragmentări ale unui șir vor rezulta în K + 1 segmente.

Acest lucru este ilustrat mai jos.

Funcționarea parametrului `maxsplit` (Imaginea autorului)

py_str = "Segment#1 Sunt un segment mai mare, Segment#2"
py_str.split(maxsplit=1)

# Ieșire
['Segment#1', "Sunt un segment mai mare, Segment#2"]

#1. Am stabilit `maxsplit` la 1. Deoarece nu am specificat un separator, fragmentarea se va face implicit după spațiile albe.

Chiar dacă al doilea segment din listă conține spații albe, fragmentarea nu mai are loc deoarece este controlată de valoarea `maxsplit` setată la unu.

py_str = "Segment#1 Segment#2 Sunt un Segment#3 mare, chiar dacă conțin spații"
py_str.split(maxsplit=2)

# Ieșire
['Segment#1',
 'Segment#2',
 "Sunt un Segment#3 mare, chiar dacă conțin spații"]

#2. Să creștem valoarea lui `maxsplit` la 2 și să observăm cum se efectuează fragmentarea în următorul exemplu.

Similar cu exemplul anterior, valoarea `maxsplit` determină numărul de fragmentări. Obținem trei segmente, după prima și a doua apariție a spațiilor albe.

#3. Ce se întâmplă dacă `maxsplit` este setat la o valoare mai mare decât numărul de apariții ale separatorului?

py_str = "Aici, sunt, doar, 4, virgule"
py_str.split(maxsplit=8)

# Ieșire
['Aici,', 'sunt,', 'doar,', '4,', 'virgule']

În următorul cod, `maxsplit` este setat la 8, deși șirul conține doar patru virgule.

Metoda `split` fragmentează `py_str` după toate cele patru apariții ale virgulei. Chiar dacă încerci să setezi `maxsplit` la o valoare mai mică decât -1, de exemplu -7, fragmentarea se va face la fiecare apariție a separatorului.

Acum, să recapitulăm tot ce am învățat și să folosim ambii parametri `sep` și `maxsplit`.

Fragmentarea unui șir Python în segmente după un separator

py_str = "Segment#1, Segment#2, Sunt un Segment#3 mare, chiar dacă conțin o ,"
py_str.split(sep = ',',maxsplit=2)

# Ieșire
['Segment#1', ' Segment#2', " Sunt un Segment#3 mare, chiar dacă conțin o ,"]

#1. Presupunem că trebuie să fragmentăm șirul `py_str` în trei segmente, la apariția virgulei (`,`). Pentru a face acest lucru, setăm valoarea lui `sep` la „,” și valoarea lui `maxsplit` la 2 în apelul metodei.

După cum se vede în rezultat, fragmentarea are loc de două ori, la primele două apariții ale separatorului.

#2. Separatorul `sep` nu trebuie să fie neapărat un caracter special. Poate fi o secvență de caractere speciale, cum ar fi liniile de subliniere duble pe care le-am folosit anterior, sau chiar un subșir.

py_str = "Trebuie să înveți structuri de date, să înveți algoritmi și să înveți mai multe!"
py_str.split(sep = 'înveți',maxsplit=2)

# Ieșire
['Trebuie să ', ' structuri de date, să ', ' algoritmi și să înveți mai multe!']

Să setăm șirul „înveți” ca argument `sep` și să vedem cum se desfășoară fragmentarea pentru diferite valori ale lui `maxsplit`. Aici, setăm `maxsplit` la 2.

py_str = "Trebuie să înveți structuri de date, să înveți algoritmi și să înveți mai multe!"
py_str.split(sep = 'înveți',maxsplit=-1)

# Ieșire
['Trebuie să ', ' structuri de date, să ', ' algoritmi și să ', ' mai multe!']

#3. Dacă dorești să fragmentezi `py_str` la toate aparițiile șirului „înveți”, putem apela metoda `.split()` setând `sep = „înveți”` — fără parametrul `maxsplit`. Acest lucru este echivalent cu a seta explicit valoarea lui `maxsplit` la -1, așa cum este demonstrat în codul de mai jos.

Observăm că fragmentarea are loc la toate aparițiile lui „înveți”.

Concluzie

Sper că acum ai înțeles cum să folosești metoda `.split()` cu șiruri de caractere în Python.

  • Iată un rezumat al acestui ghid:
  • Metoda `.split()` încorporată în Python fragmentează un șir într-o listă de subșiruri.
  • Folosește `string.split()` pentru a fragmenta șirul la fiecare apariție a separatorului implicit, spațiul alb.

Utilizează `string.split(sep, maxsplit)` pentru a fragmenta șirul de `maxsplit` ori, la apariția separatorului `sep`. Lista rezultată va avea `maxsplit+1` elemente.

Ca următor pas, poți explora cum să verifici dacă șirurile de caractere în Python sunt palindroame sau anagrame.