Како користити метод сплит() у Питхон-у

U ovom vodiču istražićemo kako se koristi Python-ova metoda split() za razdvajanje stringova u liste podstringova.

Tokom rada sa stringovima u Pythonu, na raspolaganju vam stoji niz ugrađenih metoda koje omogućavaju modifikaciju stringova, kao što su pretvaranje u velika slova, sortiranje i mnoge druge operacije. Jedna od ključnih metoda je .split(), koja razlaže string u listu manjih stringova. U nastavku ćemo detaljno analizirati njenu primenu kroz praktične primere.

Nakon prolaska kroz ovaj tutorijal, naučićete:

  • Kako funkcioniše metoda .split().
  • Kako prilagoditi razdvajanje stringova pomoću parametara sep i maxsplit.

Započnimo!

Sintaksa metode split() u Pythonu

Sledi osnovna sintaksa za upotrebu split() metode u Pythonu na bilo kojem validnom stringu:

string.split(sep, maxsplit)

# Parametri:
sep, maxsplit

# Povratna vrednost:
Lista stringova

Ovde, string može biti bilo koji važeći Python string.

Parametri sep i maxsplit su opcioni.

  • sep specificira separator, tj. znak ili niz znakova po kojem želite da razdvojite string. Treba ga definisati kao string.
  • maxsplit je ceo broj koji određuje maksimalan broj deljenja stringa.

Kada se ne navedu opcioni parametri, primenjuju se njihove podrazumevane vrednosti.

  • Ako se ne navede vrednost za sep, razmak se koristi kao podrazumevani separator.
  • Ako se ne navede vrednost za maxsplit, podrazumevana vrednost je -1, što znači da će se string deliti na svakoj pojavi separatora.

Jednostavno rečeno:

Metoda split() deli string najviše maxsplit puta, koristeći separator naveden parametrom sep.

Sada kada smo razumeli sintaksu metode split(), pređimo na primere kodiranja.

Razdvajanje Python stringa u listu stringova

Ako imate instaliran Python 3 na svom računaru, možete pratiti ove primere tako što ćete pokrenuti kod u Python REPL-u.

Za pokretanje REPL-a, unesite jednu od sledećih komandi u terminal:

$ python
$ python -i

▶ Takođe možete isprobati ove primere u online Python editoru.

U ovom primeru, py_str je Python string. Pozovimo metodu .split() na py_str bez ikakvih parametara i pogledajmo rezultat.

py_str = "Nauči kako da koristiš split() u Pythonu"
py_str.split()

# Rezultat
['Nauči', 'kako', 'da', 'koristiš', 'split()', 'u', 'Pythonu']

Kao što vidimo, string je razdvojen na svakom razmaku.

Razdvajanje Python stringa po pojavi separatora

#1. Za prvi primer, podelimo string py_str koristeći duplu donju crtu (__) kao separator.

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

# Rezultat
['Sve', 'najbolje']

#2. Uzmimo još jedan primer. Ovde py_str ima tri rečenice, od kojih svaka završava tačkom (.).

py_str = "Volim da programiram. Python je super. Učim Python 2024."
py_str.split(sep='.')

# Rezultat
['Volim da programiram', ' Python je super', ' Učim Python 2024']

▶ Kada pozovemo metodu .split() na ovom stringu sa . kao separatorom, rezultirajuća lista sadrži tri rečenice, kao što se vidi u kodu iznad.

#3. Postavimo nekoliko pitanja:

  • Šta se dešava ako se separator nikada ne pojavi u stringu?
  • Kako će se odvijati razdvajanje u tom slučaju?

Evo primera:

Pokušavamo da razdvojimo py_str po pojavi zvezdice:

py_str = "Ova linija ne sadrži zvezdicu."
py_str.split(sep='*')

# Rezultat
['Ova linija ne sadrži zvezdicu.']

— što se ne dešava.

Pošto u ovom slučaju ne može doći do razdvajanja, rezultujuća lista sadrži ceo string.

U sledećem odeljku ćemo videti kako možemo koristiti metodu split() na sadržaju tekstualne datoteke.

Razdvajanje sadržaja Python datoteke

Kada radite sa tekstualnim datotekama u Pythonu, često je potrebno podeliti sadržaj datoteke – na osnovu separatora – radi lakše obrade.

Evo primera tekstualne datoteke:

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

Kod iznad prikazuje kako koristiti split na sadržaju tekstualne datoteke ‘sample.txt’.

  • Gornji kod radi sledeće:
  • Koristi with kontekstni menadžer za otvaranje i rad sa tekstualnom datotekom ‘sample.txt’.
  • Čita sadržaj datoteke pomoću metode .read() na objektu datoteke f.
  • Deli sadržaj po pojavi separatora (...) u listu str_list.

Prolazi kroz str_list da bi pristupio svakom stringu i ispisao ga.

# Rezultat
Ovo je primer tekstualne datoteke
Sadrži informacije o
Početku sa programiranjem u Pythonu
Prema StackOverflow anketi programera za 2022. godinu
Python je jedan od najomiljenijih programskih jezika
Dakle, šta čekaš? Počni sa učenjem!

Ovo je prikaz izlaza.

Kao vežbu, možete pokušati podeliti sadržaj tekstualne datoteke po bilo kojem separatoru po izboru.

Razdvajanje Python stringa na delove

Jednom kada podelite string, dobićete dva dela; ako ga podelite dva puta, dobićete tri.

📋 Uopšteno, kada podelite string K puta, dobićete K + 1 delova.

Ovo je ilustrovano u nastavku.

Kako funkcioniše maxsplit parametar (Slika autora)

py_str = "Deo#1  Ja sam veći deo, Deo#2"
py_str.split(maxsplit=1)

# Rezultat
['Deo#1', "Ja sam veći deo, Deo#2"]

#1. Postavili smo maxsplit na 1. Nismo naveli separator, tako da se podrazumevano deli na razmacima.

Iako drugi deo liste sadrži razmake, do daljeg deljenja ne dolazi jer je razdvajanje ograničeno maksimalnom vrednošću od jedan.

py_str = "Deo#1 Deo#2 Ja sam jedan veliki Deo#3, iako sadrži razmake"
py_str.split(maxsplit=2)

# Rezultat
['Deo#1',
 'Deo#2',
 "Ja sam jedan veliki Deo#3, iako sadrži razmake"]

#2. Povećajmo vrednost maxsplit na 2 i posmatrajmo kako se odvija deljenje u sledećem primeru.

Kao i u prethodnom primeru, vrednost maxsplit određuje broj izvršenih podela. Dobijamo tri dela, razdvojena nakon prve i druge pojave razmaka.

#3. Šta se dešava ako postavite maxsplit na vrednost veću od broja pojavljivanja separatora?

py_str = "Ima, samo, 4, zareza"
py_str.split(maxsplit=8)

# Rezultat
['Ima,', 'samo,', '4,', 'zareza']

U sledećem bloku koda, postavili smo maxsplit na 8, iako string sadrži samo četiri zareza.

U ovom slučaju, metoda split deli py_str na sva četiri pojavljivanja zareza. Čak i ako pokušate da postavite maxsplit na vrednost manju od -1, na primer, -7, deljenje će se izvršiti na svim pojavljivanjima separatora.

Sada, hajde da spojimo sve što smo naučili i koristimo oba parametra sep i maxsplit.

Razdvajanje Python stringa na delove sa određenim separatorom

py_str = "Deo#1, Deo#2, Ja sam jedan veliki Deo#3, iako sadrži , "
py_str.split(sep = ',',maxsplit=2)

# Rezultat
['Deo#1', ' Deo#2', " Ja sam jedan veliki Deo#3, iako sadrži , "]

#1. Pretpostavimo da treba da podelimo string py_str na tri dela gde se pojavljuje zarez (,). Da bismo to uradili, možemo postaviti vrednost sep na ',' i vrednost maxsplit na 2 u pozivu metode.

Kao što se vidi u rezultatu, deljenje se dešava dva puta, na prva dva pojavljivanja separatora.

#2. Separator za razdvajanje ne mora uvek biti jedan poseban znak. Može biti niz specijalnih znakova, kao što su dvostruke donje crte koje smo ranije koristili, ili čak može biti podstring.

py_str = "Treba da naučiš strukture podataka, naučiš algoritme i naučiš još!"
py_str.split(sep = 'naučiš',maxsplit=2)

# Rezultat
['Treba da ', ' strukture podataka, ', ' algoritme i naučiš još!']

Postavimo string ‘naučiš’ kao argument sep i vidimo kako se odvija deljenje za različite vrednosti maxsplit. Ovde smo postavili maxsplit na 2.

py_str = "Treba da naučiš strukture podataka, naučiš algoritme i naučiš još!"
py_str.split(sep = 'naučiš',maxsplit=-1)

# Rezultat
['Treba da ', ' strukture podataka, ', ' algoritme i ', ' još!']

#3. Ako želite da podelite py_str na sva pojavljivanja stringa ‘naučiš’, možemo pozvati metodu .split() postavljanjem sep = 'naučiš' — bez parametra maxsplit. Ovo je ekvivalentno eksplicitnom postavljanju vrednosti maxsplit na -1, kao što je prikazano ispod.

Vidimo da se deljenje dešava na svim pojavama reči ‘naučiš’.

Zaključak

Nadam se da sada razumete kako se koristi metoda .split() sa Python stringovima.

  • Evo rezimea ovog tutorijala:
  • Python-ova ugrađena metoda .split() deli string u listu stringova.
  • Koristite string.split() za deljenje stringa na svakom pojavljivanju podrazumevanog separatora, razmaka.

Koristite string.split(sep,maxsplit) da podelite string maxsplit puta na pojavu separatora sep. Dobijena lista ima maxsplit+1 stavki.

Kao sledeći korak, možete naučiti kako proveriti da li su Python stringovi palindromi ili anagrami.