Szövegek darabolása: a split
Szeretnél az ünnepek alatt is gyakorolni? Vár az Easter Bug Hunt játékunk! Csatlakozz, és keresd meg az összes hibát - akár még jutalom is ütheti a markod!
Irány a játékGyakran előfordul, főleg fájlból történő beolvasásnál, hogy olyan adatfájllal dolgozunk, amelynek egy sorában több különböző adat is van, például pontosvesszővel, szóközzel, vagy tabulátorral elválasztva. Nézzük mondjuk ezt a mintafájlt:
Kovács Péter;1999;170 Szabó András;1987;173 Tóth Noémi;2001;167 Szabados Petra;1998;177
Ebben a fájlban minden sorban 3 adat található:
- Név: az ember teljes neve (szöveg)
- Születési dátum: csak évszám (egész szám)
- Testmagasság: centiméterben megadva (egész szám)
Ahhoz, hogy ezeket az adatokat külön-külön is hasznosítani tudjuk, egy sor beolvasása után a benne található 3 információt szét kell vágnunk. Erre használhatjuk a szövegek split nevű metódusát. A split-nek egy darab kötelező paramétere van, egy karaktert, vagy szövegrészletet kell neki átadnunk, aminél szét szeretnénk szeletelni a szöveget. Végeredményként egy szövegekből álló listát ad vissza, annyi elemmel, ahány darab keletkezett. Nézzünk egy mintát:
sor = "Kovács Péter;1999;170"
darabok = sor.split(";")
A kódrészlet lefutása után a darabok listában 3 elem található:
darabok[0] = "Kovács Péter"
darabok[1]="1999"
darabok[2]="170"
Érdemes megjegyezni, hogy ezek a darabok - a tartalmuktól függetlenül - mind szöveg adattípussal rendelkeznek, ha tehát egy számként szeretnénk dolgozni velük, akkor át kell őket konvertálni a megfelelő konvertáló függvénnyel, például így:
szuletett = int(darabok[1])
Speciális karakterek
Előfordulhat olyan eset, hogy a splittel valamilyen speciális karakternél szeretnénk elvagdosni a szövegünket, például sortöréseknél, vagy tabulátoroknál. Ezeket a speciális karaktereket nem tudjuk csak úgy begépelni a kódba, mert akkor a kódunk nem fog megfelelően működni, helyette az alábbi speciális jelölőket kell használnunk:
Új sor: \n
Tabulátor: \t
Próbáld ki magad is! Nézd át a cikkünkhöz tartozó mintakódot - szerkeszd és futtasd közvetlenül a böngésződben, az info9
LineFlame fejlesztőeszközével!
Próbáld ki!
Gyakorló feladatok
1. Feladat: Olvass be egy mondatot a konzolról, majd sorold fel a mondat szavait, egymás alá, azok sorszámával ellátva. Például:
Írj be egy mondatot: Nincs sok szabadidőm. 1. szó: Nincs 2. szó: sok 3. szó: szabadidőm.
2. Feladat: Kérj be a felhasználótól egy időpontot óra:perc:másodperc formátumban (pl.: 12:30:41), majd számítsd ki, hogy ez az időpont a napnak hányadik másodperce! (azaz ha a felhasználó például a 00:01:05 időpontot írja be, a program kimenete: 65) Megoldom a laborban!
3. Feladat A bemenet változó egy szöveget tartalmaz (lásd lentebb), amelyben számok találhatóak, szóközzel elválasztva. Határozd meg a szövegben található számok összegét, majd írd ki az eredményt a konzolra! A munkád teszteléséhez használd például az alábbi adatsort:
bemenet = "3 12 9 5 4 1 7"
Nehezebb feladatokat keresel? A listák gyakorló feladatok között találhatsz több olyan feladatot is, amelyekben a split-et is alkalmazhatod! (Érdemes hozzájuk áttekinteni a fájl beolvasás tananyagunkat is)