Fájlok írása Pytonban!
Elkészült a Python nyelv Szövegfájlok írása tananyagunk! Jó tanulást, jó gyakorlást!

<info9>

Szövegek vágása

Elkélne a segítség?

Ha úgy érzed, hogy elakadtál, és több segítségre van szükséged, keress bizalommal! Kedvező árú magánórák keretében szívesen segítek elsajátítani a programozás alapjait.

Magánóra ajánlatok

Szöveges adatok feldolgozásakor gyakori, hogy egy hosszabb szövegnek egy részét szeretnénk kivágni valamilyen további felhasználásra úgy, hogy nincs a szövegrészek között elválasztó karakter. (elválasztó karakter esetében használhatjuk a a split-et) Adott például az alábbi szövegrészlet: 20250117, amelyből kinyerhetjük külön az évet, a hónapot, valamint a napot a Python szövegvágás funkciójával.

#        01234567  <-- karakterek indexei
datum = "20250117"

ev    = datum[:4]     # Megadja a szöveg első 4 karakterét
honap = datum[4:6]    # Megadja a szöveg 4. és 5. karakterét
nap   = datum[6:]     # Megadja a szöveg 6. karakter utáni részét

A szövegek vágásához tehát a "szölgetes zárójel kettősponttal" operátort használjuk. Az operátor alapvető működése: [eleje:vége] ahol az eleje mutatja az első olyan karaktert, amit meg szeretnénk kapni (ne feledd! a karakterek is 0-tól indexelődnek, tehát az első karakter a 0-s számú, a következő az 1-es, stb.), a vége pedig megmutatja, hogy mi az első olyan karakter, amit már nem szeretnénk megkapni. Ez tehát lényegében azt jelenti, hogy a datum[4:6] két karaktert ad vissza: a szöveg 4-es és 5-ös sorszámú karakterét. A 6-os karaktert már nem adja vissza.

A fentebbi példa átláthatósága érdekében a szöveg fölött feltüntettük a karakterek indexeit. Amennyiben a vágás során az eleje nem kerül megadásra, akkor a vágás a szöveg legelején kezdődik -- amennyiben pedig a vége marad üresen, úgy a kivágott rész a szöveg legvégéig tart.

További példa szövegek vágására

Gyakorlati tanács
Az adatok ilyen formában való "szétvagdosása" csak akkor célravezető, ha az adatok mindig teljesen egyforma formátumban állnak rendelkezésünkre. Amennyiben ez nem így van, érdemes ennél összetettebb megoldásokkal megközelíteni a problémát!

Az alábbi példában egy vonat kijelzőjén megjelenő feliratot vágjuk szét annak alkatrészeire:

felirat = "Z60 Újszász - Szolnok"

tipus = felirat[:1]         # "Z"
szam = felirat[1:3]         # "60"
koztes = felirat[4:11]      # "Újszász"
vegallomas = felirat[14:]   # "Szolnok"

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!

Példa megnyitása

Gyakorló feladatok

1. Feladat: Egy iskola egyedi azonosító számot generál a tanulói számára, amely az alábbiakból épül fel:

Készíts egy programot, amely bekér egy ilyen 11 számjegyű azonosítót a felhasználótól, majd ez alapján kiírja, hogy melyik évben született az adott tanuló! Például a 32011129074 kódú diák - a fentebb leírtak alapján - 2011-ben született.

Tipp az 1B feladathoz
A szak nevének kiírását ugyan if szerkezettel is elkészítheted, hosszabb távon szebb, jobban gondozható kódot kapsz, ha a a szakok neveit listában, vagy szótárban tárolod, és abból íratod ki a megfelelőt. Válaszd bátran a jelenlegi tudásodhoz jobban illő lehetőséget a megoldáshoz!

1B. Feladat: Fejleszd tovább az előbb elkészített programot úgy, hogy a hallgató szakját is megjelenítse! Ehhez használd az alábbi táblázatban található információkat:

Szak kódjaSzak neve
1tömegkommunikáció szak
2programozás és adatbázis kezelés szak
3rajz és művészettörténet szak
4jogi alapismeretek szak
5biológia és kémia szak

A programnak a fentebbi bemenetre tehát az alábbi kimenetet kellene produkálnia:

Add meg az azonosítót: 32011129074
Szakod: rajz és művészettörténet
Születési éved: 2011

A programodat továbbfejlesztheted ezen kívül hibakezeléssel is - például amennyiben a szak kódja nem érvényes (0, vagy 5-nél nagyobb), akkor megjeleníthetsz egy hibaüzenetet! Hasonlóképp akkor is, ha az azonosítószám hossza nem megfelelő.

2. Feladat: Az adóazonosító jel egy magyarországon használt azonosító szám, amelyet magánszemélyek adóügyi azonosítására használnak. Ennek a 10 számjegyű kódnak a 2-6. számjegye az 1867 január 1.-től a személy születésének napjáig eltelt napok számát mutatja meg. Készíts egy programot, ami bekér egy adóazonosító jelet, majd kiírja, hogy hány nap telt el 1867. január 1. és a személy születésnapja között! (gyakorláshoz használhatod pl.: a 8480010000 kódot, amely esetén a programnak a 48001 értéket kell kiírnia!

3. Feladat: Egy iskolai totóversenyen a diákok a kapott 13 kérdésre adott válaszaikat egy darab szöveg formájában adják le, amely az 1, 2, és X karakterekből áll, pl.: 1X22X1XX12112. Készíts programot, amely bekéri egy csapat válaszait, valamint bekéri - szintén azonos formátumban - a javítókulcsot (azaz a helyes válaszokat), majd kiszámítja, hogy a tanuló hány kérdésre válaszolt helyesen! Példa a program kimenetére:

Diák megoldása: 1X22X1XX12112
Javítókulcs: 1XXXX21X22X12
Tanuló eredménye: 7 pont

4. Feladat Kérj be a felhasználótól egy dátumot, 8 karakteres, elválasztó karakter nélküli formátumban (pl.: 20250129), majd írd ki belőle külön az évet, hónapot, valamint a napot! Minta a program kimenetére:

Dátum: 20250129
Év: 2025
Hónap: 01
Nap: 29