7 Failist järjendisse lugemine
Seni oleme tegutsenud kahemõõtmeliste järjenditega, mille elemendid kirjutasime programmiteksti sisse, näiteks:
tabel = [[1, 2, 4], [-1, 5, 0]]
või otse käsureal funktsioonile argumente andes, näiteks:
>>> on_bingo_tabel([[1, 30, 34, 55, 75], [10, 16, 40, 50, 67], [5, 20, 38, 48, 61], [4, 26, 43, 49, 70], [15, 17, 33, 51, 66]])
Vähegi suuremate mahtude juures on see ebamugav ja praktikas ka tihti võimatu, sest tahame sama programmi abil töödelda palju erinevaid andmeid. Failist lugemist käsitlesime varem programmeerimise õpikus. Nüüd vaatame, kuidas failist andmed mugavalt kahemõõtmelisse järjendisse saada.
Olgu näiteks õpilaste saadud (täisarvulised) punktid tühikutega eraldatult failis, igal real ühe õpilase punktid. Näiteks:
1 4 5 3 6 8 2 4 8 10 5 0
Enesekontroll (1 küsimus)
Kahemõõtmelisse järjendisse saab need andmed näiteks nii:
punktide_tabel = []
for rida in fail: # iga rea jaoks failist
op_punktid = [] # kogume ühe õpilase punkte
osad = rida.split() # tühikute kohalt osadeks
for osa in osad: # osade kaupa
op_punktid.append(int(osa)) # järjekordsed punktid juurde
punktide_tabel.append(op_punktid) # õpilase punktide järjend juurde
Enesekontroll (1 küsimus)
Eraldusmärgid andmetes
Eelmises näites olid ühel real olevad andmed eraldatud tühikutega. Ajalooliselt on eraldajaks olnud näiteks koma. Sellest tuleb ka levinud failiformaadi lühend CSV – ingl Comma-separated values. Tegelikult ei pruugi koma alati hästi eraldajaks sobida, kuna võib andmetes tähendada midagi muud, näiteks komadega arve. Levinumad eraldajad on tabulatsioonimärk
ja semikoolon. Ka meie edasistes näidetes on eraldajaks just semikoolon. CSV-failide kasutamisest räägime lisalugemise peatükis."\t"