CSV format datoteke najčešće se koristi za održavanje baza podataka i proračunskih tablica. Prvi redak u CSV datoteci najčešće se koristi za definiranje polja stupaca, dok se bilo koji drugi preostali redak smatra retkom. Ova struktura omogućuje korisnicima predstavljanje tabličnih podataka pomoću CSV datoteka. CSV datoteke mogu se uređivati u bilo kojem uređivaču teksta. Međutim, aplikacije poput LibreOffice Calc nude napredne alate za uređivanje, sortiranje i filtriranje.
Čitanje podataka iz CSV datoteka pomoću Pythona
CSV modul u Pythonu omogućuje vam čitanje, pisanje i manipulaciju bilo kojim podacima pohranjenim u CSV datotekama. Da biste pročitali CSV datoteku, morat ćete upotrijebiti metodu "čitača" iz Pythonova modula "csv" koji je uključen u Pythonovu standardnu knjižnicu.
Uzmite u obzir da imate CSV datoteku koja sadrži sljedeće podatke:
Mango, banana, jabuka, naranča50,70,30,90
Prvi red datoteke definira svaku kategoriju stupca, u ovom slučaju naziv voća. Drugi redak čuva vrijednosti ispod svakog stupca (zaliha u ruci). Sve ove vrijednosti odvojene su zarezom. Ako biste ovu datoteku otvorili u aplikaciji za proračunske tablice poput LibreOffice Calc, izgledala bi ovako:
Sada čitati vrijednosti iz „voća.csv ”pomoću Pythonova modula“ csv ”, trebat ćete koristiti metodu“ čitača ”u sljedećem formatu:
uvoz csvs otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.čitač (datoteka)
za redak u čitaču podataka:
ispis (redak)
Prvi redak u gornjem uzorku uvozi modul "csv". Dalje, izjava “s otvorenim” koristi se za sigurno otvaranje datoteke pohranjene na vašem tvrdom disku (“voće.csv ”u ovom slučaju). Novi objekt "data_reader" stvara se pozivanjem metode "čitač" iz modula "csv". Ova metoda "čitača" uzima naziv datoteke kao obvezni argument, pa referenca na "voće.csv ”mu se prenosi. Zatim se pokreće naredba petlje „for“ za ispis svakog retka iz „plodova“.csv ”datoteku. Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:
['50', '70', '30', '90']Ako želite dodijeliti brojeve redaka izlazu, možete upotrijebiti funkciju "enumerate" koja svakoj stavci u iteralu dodjeljuje broj (počevši od 0, ako se ne promijeni).
uvoz csvs otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.čitač (datoteka)
za indeks, redak u nabrajanju (data_reader):
ispis (indeks, redak)
Varijabla "indeks" zadržava broj za svaki element. Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:
0 ['Mango', 'Banana', 'Jabuka', 'Naranča']1 ['50', '70', '30', '90']
Budući da prvi redak u datoteci "csv" obično sadrži naslove stupaca, za izdvajanje ovih naslova možete koristiti funkciju "enumerate":
uvoz csvs otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.čitač (datoteka)
za indeks, redak u nabrajanju (čitač podataka):
ako je indeks == 0:
naslovi = redak
ispis (naslovi)
Blok „ako“ u gornjoj izjavi provjerava je li indeks jednak nuli (prvi redak u „plodovima.CSV datoteka). Ako je odgovor da, tada je vrijednost varijable "line" dodijeljena novoj varijabli "headings". Nakon pokretanja gornjeg uzorka koda trebali biste dobiti sljedeći izlaz:
['Mango', 'Banana', 'Jabuka', 'Naranča']Imajte na umu da prilikom pozivanja „csv.čitač ”metodom pomoću neobaveznog argumenta„ graničnik ”u sljedećem formatu:
uvoz csvs otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.čitač (datoteka, graničnik = ";")
za redak u čitaču podataka:
ispis (redak)
Budući da je u csv datoteci svaki stupac povezan s vrijednostima u redu, možda ćete htjeti stvoriti Python "rječnik" objekt prilikom čitanja podataka iz "csv" datoteke. Da biste to učinili, trebate koristiti metodu "DictReader", kao što je prikazano u donjem kodu:
uvoz csvs otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.DictReader (datoteka)
za redak u čitaču podataka:
ispis (redak)
Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:
'Mango': '50', 'Banana': '70', 'Jabuka': '30', 'Naranča': '90'Dakle, sada imate objekt rječnika koji povezuje pojedinačne stupce s odgovarajućim vrijednostima u redovima. Ovo dobro funkcionira ako imate samo jedan redak. Pretpostavimo da „plodovi.csv ”datoteka sada uključuje dodatni redak koji određuje koliko će dana trebati da zaliha voća propadne.
Mango, banana, jabuka, naranča50,70,30,90
3,1,6,4
Kada imate više redaka, izvođenje istog gornjeg uzorka koda rezultirat će različitim rezultatima.
'Mango': '50', 'Banana': '70', 'Jabuka': '30', 'Narančasta': '90''Mango': '3', 'Banana': '1', 'Jabuka': '6', 'Narančasta': '4'
To možda nije idealno jer biste mogli preslikati sve vrijednosti koje se odnose na jedan stupac u jedan par ključ / vrijednost u rječniku Python. Isprobajte ovaj uzorak koda:
uvoz csvs otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.DictReader (datoteka)
data_dict =
za redak u čitaču podataka:
za ključ, vrijednost u retku.stavke ():
data_dict.setdefault (tipka, [])
data_dict [ključ].dodati (vrijednost)
ispis (data_dict)
Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:
'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90 ',' 4 ']Petlja "za" koristi se na svakom elementu objekta "DictReader" za petlju preko parova ključ / vrijednost. Prije toga definirana je nova varijabla Python rječnika "data_dict". Pohranit će konačna preslikavanja podataka. Ispod drugog bloka petlje "for" koristi se metoda "setdefault" rječnika Python. Ova metoda dodjeljuje vrijednost ključu rječnika. Ako par ključ / vrijednost ne postoji, iz navedenih argumenata kreira se novi. Dakle, u ovom će se slučaju ključu dodijeliti novi prazan popis ako već ne postoji. Na kraju, "vrijednost" se dodaje odgovarajućem ključu u konačnom objektu "data_dict".
Zapisivanje podataka u CSV datoteku
Da biste upisali podatke u datoteku „csv“, morat ćete upotrijebiti metodu „pisača“ iz modula „csv“. Primjer u nastavku dodati će novi redak postojećim „plodovima.csv ”datoteku.
uvoz csvs otvorenim ("voće.csv "," a ") kao datoteka:
data_writer = csv.pisac (datoteka)
data_writer.pisanje ([3,1,6,4])
Prva izjava otvara datoteku u načinu "dodavanje", označeno argumentom "a". Dalje se naziva metoda "pisac" i referenca na "voće.csv ”mu se predaje kao argument. Metoda "writerow" zapisuje ili dodaje novi redak u datoteku.
Ako želite pretvoriti Python rječnik u strukturu datoteke „csv“ i spremiti izlaz u datoteku „csv“, pokušajte s ovim kodom:
uvoz csvs otvorenim ("voće.csv "," w ") kao datoteka:
naslovi = ["Mango", "Banana", "Jabuka", "Naranča"]
data_writer = csv.DictWriter (datoteka, imena polja = naslovi)
data_writer.zaglavlje ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Jabuka": 30, "Naranča": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Jabuka": 6, "Naranča": 4)
Nakon otvaranja praznog „voća.csv “pomoću izraza„ s otvorenim “definirana je nova varijabla„ headings “koja sadrži naslove stupaca. Novi objekt "data_writer" kreira se pozivanjem metode "DictWriter" i prosljeđivanjem reference na "voće.csv “i argument„ imena polja “. U sljedećem retku naslovi stupaca zapisuju se u datoteku metodom "headheader". Posljednje dvije izjave dodaju nove retke u odgovarajuće naslove stvorene u prethodnom koraku.
Zaključak
CSV datoteke pružaju uredan način zapisivanja podataka u tabličnom formatu. Ugrađeni Pythonov modul "csv" olakšava rukovanje podacima dostupnim u "csv" datotekama i implementaciju daljnje logike na njemu.