CSV -filformat brukes ofte til å opprettholde databaser og regneark. Den første linjen i en CSV -fil brukes ofte til å definere kolonnefelt mens andre gjenværende linjer anses som rader. Denne strukturen lar brukere presentere tabelldata ved hjelp av CSV -filer. CSV -filer kan redigeres i hvilken som helst tekstredigerer. Imidlertid gir applikasjoner som LibreOffice Calc avanserte redigeringsverktøy, sorterer og filterfunksjoner.
Lese data fra CSV -filer ved hjelp av Python
CSV -modulen i Python lar deg lese, skrive og manipulere data lagret i CSV -filer. For å lese en CSV -fil, må du bruke "leser" -metoden fra Pythons "CSV" -modul som er inkludert i Pythons standardbibliotek.
Tenk på at du har en CSV -fil som inneholder følgende data:
Mango, banan, eple, oransjeDen første raden i filen definerer hver kolonnekategori, fruktnavn i dette tilfellet. Den andre linjen lagrer verdier under hver kolonne (aksje-i-hånd). Alle disse verdiene er avgrenset av komma. Hvis du skulle åpne denne filen i et regnearkapplikasjon som LibreOffice Calc, ville det se slik ut:
Nå for å lese verdier fra “frukt.CSV ”-fil ved hjelp av Pythons“ CSV ”-modul, må du bruke“ leser ”-metoden i følgende format:
Importer CSVDen første linjen i eksemplet ovenfor importerer “CSV” -modulen. Neste, "med åpen" uttalelse brukes til å åpne en fil som er lagret på harddisken din ("frukt.CSV ”i dette tilfellet). Et nytt "Data_Reader" -objekt opprettes ved å kalle "leser" -metoden fra "CSV" -modulen. Denne "leser" -metoden tar et filnavn som et obligatorisk argument, så referansen til "frukt.CSV ”sendes til det. Deretter kjøres en "for" sløyfe -uttalelse for å skrive ut hver linje fra "fruktene.CSV ”-fil. Etter å ha kjørt kodeprøven som er nevnt over, bør du få følgende utdata:
['50', '70', '30', '90']Hvis du vil tilordne linjenumre til utdata, kan du bruke "enumerat" -funksjonen som tildeler et nummer til hvert element i en iterable (starter fra 0 med mindre endret).
Importer CSV"Indeks" -variabelen holder tellingen for hvert element. Etter å ha kjørt kodeprøven som er nevnt over, bør du få følgende utdata:
0 ['Mango', 'Banana', 'Apple', 'Orange']Siden den første linjen i en "CSV" -fil vanligvis inneholder kolonneoverskrifter, kan du bruke "enumerate" -funksjonen for å trekke ut disse overskriftene:
Importer CSV"Hvis" -blokken i uttalelsen ovenfor sjekker om indeksen er lik null (første linje i "frukt.CSV ”-fil). Hvis ja, tildeles verdien av "linje" -variabelen til en ny "overskrift" -variabel. Etter å ha kjørt kodeprøven ovenfor, bør du få følgende utdata:
['Mango', 'Banana', 'Apple', 'Orange']Merk at du kan bruke din egen avgrenser når du ringer “CSV.Leser "-metode ved å bruke et valgfritt" avgrensning "-argument i følgende format:
Importer CSVSiden i en CSV -fil er hver kolonne assosiert med verdier på rad, kan det være lurt å lage et Python “Dictionary” -objekt når du leser data fra en “CSV” -fil. For å gjøre det, må du bruke “DicTreader” -metoden, som vist i koden nedenfor:
Importer CSVEtter å ha kjørt kodeprøven som er nevnt over, bør du få følgende utdata:
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'Så nå har du et ordboksobjekt som knytter individuelle kolonner med deres tilsvarende verdier i radene. Dette fungerer bra hvis du bare har en rad. La oss anta at “fruktene.CSV ”-fil inkluderer nå en ekstra rad som spesifiserer hvor mange dager det vil ta for å bestemme frukt å gå til grunne.
Mango, banan, eple, oransjeNår du har flere rader, vil det å kjøre samme kodeprøve ovenfor gi forskjellige utganger.
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'Dette er kanskje ikke ideelt, ettersom du kanskje vil kartlegge alle verdier som gjelder en kolonne til en nøkkelverdipar i en Python-ordbok. Prøv denne kodeprøven i stedet:
Importer CSVEtter å ha kjørt kodeprøven som er nevnt over, bør du få følgende utdata:
'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90 ',' 4 ']En "for" -sløyfe brukes på hvert element i "dictreader" -objektet for å sløyfe over nøkkelverdipar. En ny Python -ordbokvariabel “Data_dict” er definert før det. Det vil lagre endelige datakart. Under den andre "for" sløyfeblokken brukes Python Dictionarys "setdefault" -metode. Denne metoden tildeler en verdi til en ordboksnøkkel. Hvis nøkkelverdiparet ikke eksisterer, opprettes det en ny fra de spesifiserte argumentene. Så i dette tilfellet vil en ny tom liste bli tildelt en nøkkel hvis den ikke allerede eksisterer. Til slutt er "verdi" lagt til den tilsvarende nøkkelen i det endelige "Data_dict" -objektet.
Skrive data til en CSV -fil
For å skrive data til en "CSV" -fil, må du bruke "skribent" -metoden fra "CSV" -modulen. Eksemplet nedenfor vil legge til en ny rad til de eksisterende "fruktene.CSV ”-fil.
Importer CSVDen første uttalelsen åpner filen i "vedlegg" -modus, betegnet med argumentet "a". Neste kalles "forfatter" -metoden og referansen til "frukt.CSV ”-filen sendes til den som et argument. "Writerow" -metoden skriver eller legger til en ny rad i filen.
Hvis du vil konvertere Python Dictionary til en "CSV" -filstruktur og lagre utdataene i en "CSV" -fil, kan du prøve denne koden:
Importer CSVEtter å ha åpnet en tom "frukt.CSV ”-filen som bruker en" med åpen "uttalelse, er en ny variabel" overskrifter "definert som inneholder kolonneoverskrifter. Et nytt objekt “Data_Writer” opprettes ved å kalle “Dictwriter” -metoden og sende den referanse til “Fruktene.CSV ”-fil og et" feltnavn "-argument. I neste linje skrives kolonneoverskrifter til filen ved hjelp av metoden “WritHeader”. De to siste uttalelsene legger nye rader til deres tilsvarende overskrifter som er opprettet i forrige trinn.
Konklusjon
CSV -filer gir en fin måte å skrive data i tabellformat. Pythons innebygde “CSV” -modul gjør det enkelt å håndtere data tilgjengelig i “CSV” -filer og implementere ytterligere logikk på den.