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
imaxsplit
.
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 datotekef
. - Deli sadržaj po pojavi separatora (
...
) u listustr_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.