Matevž se pri svojem delu pogosto srečuje s podatki, ki so v datoteko zapisani v oblikitabele. Da mu ne bo treba kode za branje pisati vedno znova, mu pomagaj napisatifunkcijo preberi_tabelo(ime_datoteke, locilo), ki sprejme ime datoteke s tabelo teropcijski argument locilo, ki pove, kateri znak razmejuje stolpce. Privzeto ločilo naj bovejica.Prva vrstica datoteke predstavlja imena stolpcev, vsaka naslednja pa en podatek iz tabele.Funkcija naj vrne seznam slovarjev, kjer je vsaka vrstica tabele predstavljena s slovarjem,katerega ključi so imena stolpcev, vrednosti pa ustrezne vrednosti iz tabele.Predpostavite, da datoteka zagotovo obstaja in je pravilno sestavljena.Zgled:Če imamo podano datoteko podatki.csv:0 Vpisna š tevilka , Ime , Priimek , Program , Letnik1 1741651 , Jan , Kosec , Matematika ( UNI ) ,22 1741652 , Maja , Avsec , Prakti č na matematika ( VS Š ) ,33 1741653 , Janja , Lukan , Finan č na matematika ( MAG ) ,14 1741654 , Lan , Ž ibert , Uporabna statistika ( MAG ) ,2naj da klic funcije preberi_tabelo(podatki.csv) naslednji rezultat:2>>> preberi_tabelo ( ’ podatki . csv ’)[{ ’ Ime ’: ’Jan ’ ,’ Letnik ’: ’2 ’ ,’ Priimek ’: ’ Kosec ’ ,’ Program ’: ’ Matematika ( UNI ) ’ ,’ Vpisna š tevilka ’: ’1741651 ’} ,{ ’ Ime ’: ’ Maja ’ ,’ Letnik ’: ’3 ’ ,’ Priimek ’: ’ Avsec ’ ,’ Program ’: ’ Prakti č na matematika ( VS Š ) ’ ,’ Vpisna š tevilka ’: ’1741652 ’} ,{ ’ Ime ’: ’ Janja ’ ,’ Letnik ’: ’1 ’ ,’ Priimek ’: ’ Lukan ’ ,’ Program ’: ’ Finan č na matematika ( MAG ) ’ ,’ Vpisna š tevilka ’: ’1741653 ’} ,{ ’ Ime ’: ’Lan ’ ,’ Letnik ’: ’2 ’ ,’ Priimek ’: ’Ž ibert ’ ,’ Program ’: ’ Uporabna statistika ( MAG ) ’ ,’ Vpisna š tevilka ’: ’1741654 ’}]Če bi v datoteki podatki.csv vse vejice nadomestili s podpičji pa bi funkcijo poklicali ta-kole preberi_tabelo(’podatki.csv’, locilo=’;’). Funkcija bi v tem primeru vrnilaenak rezultat kot v zgledu.
Question
Matevž se pri svojem delu pogosto srečuje s podatki, ki so v datoteko zapisani v oblikitabele. Da mu ne bo treba kode za branje pisati vedno znova, mu pomagaj napisatifunkcijo preberi_tabelo(ime_datoteke, locilo), ki sprejme ime datoteke s tabelo teropcijski argument locilo, ki pove, kateri znak razmejuje stolpce. Privzeto ločilo naj bovejica.Prva vrstica datoteke predstavlja imena stolpcev, vsaka naslednja pa en podatek iz tabele.Funkcija naj vrne seznam slovarjev, kjer je vsaka vrstica tabele predstavljena s slovarjem,katerega ključi so imena stolpcev, vrednosti pa ustrezne vrednosti iz tabele.Predpostavite, da datoteka zagotovo obstaja in je pravilno sestavljena.Zgled:Če imamo podano datoteko podatki.csv:0 Vpisna š tevilka , Ime , Priimek , Program , Letnik1 1741651 , Jan , Kosec , Matematika ( UNI ) ,22 1741652 , Maja , Avsec , Prakti č na matematika ( VS Š ) ,33 1741653 , Janja , Lukan , Finan č na matematika ( MAG ) ,14 1741654 , Lan , Ž ibert , Uporabna statistika ( MAG ) ,2naj da klic funcije preberi_tabelo(podatki.csv) naslednji rezultat:2>>> preberi_tabelo ( ’ podatki . csv ’)[{ ’ Ime ’: ’Jan ’ ,’ Letnik ’: ’2 ’ ,’ Priimek ’: ’ Kosec ’ ,’ Program ’: ’ Matematika ( UNI ) ’ ,’ Vpisna š tevilka ’: ’1741651 ’} ,{ ’ Ime ’: ’ Maja ’ ,’ Letnik ’: ’3 ’ ,’ Priimek ’: ’ Avsec ’ ,’ Program ’: ’ Prakti č na matematika ( VS Š ) ’ ,’ Vpisna š tevilka ’: ’1741652 ’} ,{ ’ Ime ’: ’ Janja ’ ,’ Letnik ’: ’1 ’ ,’ Priimek ’: ’ Lukan ’ ,’ Program ’: ’ Finan č na matematika ( MAG ) ’ ,’ Vpisna š tevilka ’: ’1741653 ’} ,{ ’ Ime ’: ’Lan ’ ,’ Letnik ’: ’2 ’ ,’ Priimek ’: ’Ž ibert ’ ,’ Program ’: ’ Uporabna statistika ( MAG ) ’ ,’ Vpisna š tevilka ’: ’1741654 ’}]Če bi v datoteki podatki.csv vse vejice nadomestili s podpičji pa bi funkcijo poklicali ta-kole preberi_tabelo(’podatki.csv’, locilo=’;’). Funkcija bi v tem primeru vrnilaenak rezultat kot v zgledu.
Solution
Za rešitev te naloge bomo uporabili Pythonov vgrajen modul csv, ki omogoča branje in pisanje v csv datotekah.
Najprej definiramo funkcijo preberi_tabelo, ki sprejme dva argumenta: ime_datoteke in locilo. locilo je opcijski argument, ki je privzeto nastavljen na vejico.
def preberi_tabelo(ime_datoteke, locilo=','):
Nato odpremo datoteko za branje z uporabo funkcije open. Uporabimo kontekstni upravitelj with, da se datoteka avtomatsko zapre, ko končamo z branjem.
with open(ime_datoteke, 'r') as datoteka:
Uporabimo csv.reader za branje datoteke. Prvi argument je datoteka, ki jo želimo prebrati, drugi argument pa je ločilo, ki ga uporabljamo.
bralec = csv.reader(datoteka, delimiter=locilo)
Nato preberemo prvo vrstico datoteke, ki vsebuje imena stolpcev.
stolpci = next(bralec)
Definiramo prazen seznam, v katerega bomo shranili slovarje.
tabela = []
Za vsako vrstico v bralec, ustvarimo slovar, kjer so ključi imena stolpcev in vrednosti ustrezne vrednosti iz tabele. Ta slovar dodamo v seznam tabela.
for vrstica in bralec:
slovar = {stolpci[i]: vrstica[i] for i in range(len(stolpci))}
tabela.append(slovar)
Na koncu funkcija vrne seznam tabela.
return tabela
Celotna funkcija je torej:
def preberi_tabelo(ime_datoteke, locilo=','):
with open(ime_datoteke, 'r') as datoteka:
bralec = csv.reader(datoteka, delimiter=locilo)
stolpci = next(bralec)
tabela = []
for vrstica in bralec:
slovar = {stolpci[i]: vrstica[i] for i in range(len(stolpci))}
tabela.append(slovar)
return tabela
Similar Questions
Želimo napisati funkcijo, ki bo poiskala vse datoteke v mapi pot in njenih podmapah, katerihvelikost presega max_velikost. Funkcija naj vrne tabelo tabelo parov poti do velikih datotekin njihovih velikosti, urejeno po velikosti. Dopolni funkcijo na naslednji strani, da bo delovalakot kaže zgled:Zgled:Za naslednjo datotečno strukturo:mapaword.exe (499)kodazelva.py (256)podmapapodmapasvet.py (512)slikeselfie.jpg (999)videoposnetkitekma.mp4 (2048)test.mp4 (605)video.mp4 (1024)bo funkcija delovala tako (zaradi pregledno-sti je izhodna tabela razbita na posamezne vr-stice):>>> velike_datoteke ( " mapa " , 500)[( " mapa / videoposnetki / tekma . mp4 " , 2048) ,( " mapa / videoposnetki / video . mp4 " , 1024) ,( " mapa / slike / selfie . jpg " , 999) ,( " mapa / videoposnetki / test . mp4 " , 605) ,( " mapa / podmapa / podmapa / svet . py " , 512)]def velike_datoteke ( pot , max_velikost ):tab_velikosti =for dat in :celotna_pot =ifvelikost =if :tab_velikosti . (( celotna_pot , velikost ))else :rek =tab_velikosti . ( rek )return sorted ( tab_velikosti , ,)
Vozač je na javnom putu dužan da uključi sve pokazivače pravca na vozilu: (zaokružiti dva tačna odgovora)pitanje 444 pravila saobraćajakada vrši polukružno okretanje,ako se zaustavi na kolovozu zbog postupanja po saobraćajnom znaku ili pravilu saobraćaja,ako se zaustavi na kolovozu, osim prilikom parkiranja na obeleženom parkingu, odnosno zbog postupanja po saobraćajnom znaku ili pravilu saobraćaja,ako se kreće unazad.
Sestavi funkcijo racun, ki sprejme ime datoteke, ki jo tvori več vrstic. V vsaki vrstici jezapisan (pravilno!) račun. Funkcija naj zapiše te račune skupaj z rezultati na novo dato-teko z imenom rezultati.txt tako, kot kaže zgled. Namig: vrednost izraza, zapisanegakot niz, izračunamo s pomočjo funkcije eval, npr. eval("1 + 3 - 10 * (9 // 5)")vrne -6.Vsebina datoteke "primer1.txt":7 - 83 * 4.51 + 3 - 10 * (9 // 5)>>> racun("primer1.txt")>>>Vsebina datoteke "rezultati.txt":7 - 8 = -13 * 4.5 = 13.51 + 3 - 10 * (9 // 5) = -6
Sestavi naslednje preproste funkcije. Predpostavi, da so morebitni potrebni moduli uvoženi -če potrebujemo modul m je ta uvožen z ukazom import m.(1) [5 T] Funkcijo st_praznih(datoteka), ki vrne število praznih vrstic v tekstovni datotekiz imenom datoteka.(2) [5 T] Funkcijo v_rikverc(besedilo), ki sprejme besedilo, v katerem so posameznebesede ločene s piko, in vrne besedilo z obrnjenim vrstnim redom besed. Za besedilo"danes.je.lep.dan" bo funkcija torej vrnila niz "dan.lep.je.danes".(3) [5 T] Funkcijo pravilni_nkotnik, ki sprejme želvo zelva, število kotov n (kjer je n > 3)ter dolžino stranice a in nariše pravilni n-kotnik.3
GET operacija, vezana za poziv REST servisa, može biti upotrebljena za:Choose at least one answer. prikaz pojedinačnih knjiga iz baze podataka ažuriranje knjige iz baze podataka prikaz svih dostupnih knjiga
Upgrade your grade with Knowee
Get personalized homework help. Review tough concepts in more detail, or go deeper into your topic by exploring other relevant questions.