Slik leser og skriver du CSV-filer i Python

CSV-formatet er det mest brukte importerings- og eksportformatet for databaser og regneark. Denne opplæringen vil gi en detaljert introduksjon til CSV-er og modulene og klassene som er tilgjengelige for å lese og skrive data til CSV-filer. Den vil også dekke et fungerende eksempel for å vise deg hvordan du leser og skriver data til en CSV-fil i Python.

Hva er en CSV-fil?

En CSV-fil (kommaseparerte verdier) lar data lagres i en tabellstruktur med en .csv-utvidelse. CSV-filer har blitt brukt mye i e-handelsapplikasjoner fordi de anses veldig enkle å behandle. Noen av områdene hvor de er blitt brukt er:

  • importere og eksportere kundedata
  • importere og eksportere produkter
  • eksporterende ordrer
  • Eksporterende e-handel analytiske rapporter

Reader og Writer Modules

CSV-modulen har flere funksjoner og klasser tilgjengelig for lesing og skriving av CSVer, og de inkluderer:

  • csv.reader-funksjonen
  • csv.writer funksjon
  • csv.Dictwriter klasse
  • csv.DictReader klasse

csv.reader

Csv.reader-modulen tar følgende parametere:

  • csvfile: Dette er vanligvis et objekt som støtter iteratorprotokollen og vanligvis returnerer en streng hver gang den er __next __ () Metoden kalles.
  • dialekt = 'utmerker': En valgfri parameter som brukes til å definere et sett med parametere som er spesifikke for en bestemt CSV-dialekt.
  • fmtparams: En valgfri parameter som kan brukes til å overstyre eksisterende formateringsparametere.

Her er et eksempel på hvordan du bruker csv.reader-modulen.

importer csv med åpen ('example.csv', newline = ") som fil: leser = csv.reader (fil) for rad i leser: skriv ut (rad)

csv.writer-modulen

Denne modulen ligner csv.reader-modulen og brukes til å skrive data til en CSV. Det tar tre parametere:

  • csvfile: Dettekanvære noe objekt med a skrive() metode.
  • dialekt = 'utmerker': En valgfri parameter som brukes til å definere et sett med parametere som er spesifikke for en bestemt CSV.
  • fmtparam: En valgfri parameter som kan brukes til å overstyre eksisterende formateringsparametere.

DictReader og DictWriter Classes

DictReader og DictWriter er klasser tilgjengelig i Python for lesing og skriving til CSV. Selv om de ligner på leseren og forfatterfunksjonene, bruker disse klassene ordboksobjekter til å lese og skrive til csv-filer.

DictReader

Det skaper et objekt som kartlegger informasjonen, leses inn i en ordbok hvis nøkkel er gitt av feltnavn parameter. Denne parameteren er valgfri, men når den ikke er spesifisert i filen, blir de første raddataene nøklene til ordlisten.

Eksempel:

importer csv med åpen ('name.csv') som csvfile: leser = csv.DictReader (csvfile) for rad i leser: skriv ut (rad ['first_name'], rad ['last_name']) 

DictWriter

Denne klassen ligner på DictWriter-klassen og gjør det motsatte, som skriver data til en CSV-fil. Klassen er definert som csv.DictWriter(csvfile, feltnavn, restval =", extrasaction = 'raise', dialekt = 'utmerker', * args, **kwds)

De feltnavn parameter definerer sekvensen av nøkler som identifiserer rekkefølgen der verdier i ordboken er skrevet til CSV-filen. I motsetning til DictReader, er denne nøkkelen ikke valgfri og må defineres for å unngå feil når du skriver til en CSV.

Dialekter og formatering

En dialekt er en hjelpeklasse som brukes til å definere parametrene for en bestemt leser eller forfatter forekomst. Dialekter og formateringsparametere må deklareres når en leser eller forfatterfunksjon utføres.

Det finnes flere attributter som støttes av en dialekt:

  • delimiter: En streng som brukes til å skille felt. Det er som standard ''.
  • dobbelt tilbud: Kontrollerer hvordan forekomster av quotechar vises i et felt bør siteres. Kan være sant eller falskt.
  • escapechar: En streng som brukes av forfatteren til å unnslippe delimiter hvis sitering er satt til QUOTE_NONE.
  • lineterminator: En streng som brukes til å avslutte linjer produsert av forfatter. Det er som standard '\ R \ n'.
  • quotechar: En streng som brukes til å sitere felt som inneholder spesialtegn. Det er som standard'"'.
  • skipinitialspace: Hvis satt til ekte, Hvit plass umiddelbart etter delimiter blir ignorert.
  • streng: Hvis satt tilekte, Det reiser et unntak Feil på dårlig CSV-inngang.
  • sitering: Kontrollerer når anførselstegn skal genereres når du leser eller skriver til en CSV.

Leser en CSV-fil

La oss se hvordan du leser en CSV-fil ved hjelp av hjelpemodulene vi har diskutert ovenfor.

Opprett din CSV-fil og lagre den som example.csv. Pass på at den har .csv utvidelse og fyll inn noen data. Her har vi vår CSV-fil som inneholder navnene på studenter og deres karakterer.

Nedenfor er koden for å lese dataene i vår CSV ved hjelp av begge csv.reader funksjon og csv.DictReader klasse.

Lese en CSV-fil med csv.reader

importer csv med åpen ('example.csv') som File: reader = csv.reader (Fil, delimiter = ",", quotechar = ",", citerer = csv.QUOTE_MINIMAL) for rad i leser: skriv ut 

I koden ovenfor importerer vi CSV-modulen og åpner deretter vår CSV-fil som Fil. Vi definerer leserobjektet og bruker csv.reader metode for å trekke dataene inn i objektet. Vi deretter iterate over leser objekt og hente hver rad av dataene våre.

Vi viser lesdataene ved å skrive ut innholdet til konsollen. Vi har også angitt de nødvendige parametrene, for eksempel avgrensning, quotechar og citerer.

Produksjon

['first_name', 'last_name', 'grade'] ['Alex', 'Brian', 'B'] ['Rachael', 'Rodriguez', 'A'] ['Tom', 'smith', 'C '] 

Leser en CSV-fil med DictReader

Som nevnt ovenfor tillater DictWriter oss å lese en CSV-fil ved å kartlegge dataene i en ordbok i stedet for strenger som i tilfelle av csv.reader modul. Selv om feltnavnet er en valgfri parameter, er det viktig å alltid ha kolonnene dine merket for lesbarhet.

Slik leser du en CSV ved hjelp av DictWriter-klassen.

importer csv results = [] med åpen ('example.csv') som File: reader = csv.DictReader (File) for rad i leser: results.append (rad) utskriftsresultater 

Vi importerer først csv-modulen og initialiserer en tom liste resultater som vi vil bruke til å lagre data hentet. Vi definerer leserobjektet og bruker csv.DictReader metode for å trekke dataene inn i objektet. Vi deretter iterate over leser objekt og hente hver rad av dataene våre.

Til slutt legger vi hver rad til resultatlisten og skriver ut innholdet til konsollen.

Produksjon

['Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': 'A', 'first_name': 'Rachael', 'last_name': 'Rodriguez '', '' Grade ':' C ',' first_name ':' Tom ',' last_name ':' smith ', ' Grade ':' B ',' first_name ':' Jane ',' last_name ' 'Oscar', 'Grade': 'A', 'first_name': 'Kennzy', 'last_name': 'Tim'] 

Som du kan se over, er det bedre å bruke DictReader-klassen fordi den gir ut dataene våre i et ordboksformat som er lettere å jobbe med.

Skriver til en CSV-fil

La oss nå se hvordan du går om å skrive data til en CSV-fil ved hjelp av csv.writer funksjon og csv.Dictwriter klasse diskutert i begynnelsen av denne opplæringen.

Skrive til en CSV-fil ved hjelp av csv.writer

Koden nedenfor skriver dataene som er definert til example2.csv fil.

Import csv myData = [["first_name", "second_name", "Grade"], ['Alex', 'Brian', 'A'], ['Tom', 'Smith', 'B'] myFile = åpen ('example2.csv', 'w') med myFile: writer = csv.writer (myFile) writer.writerows (myData) utskrift ("Skriving fullført") 

Først importerer vi csv modulen, og forfatter() funksjonen vil skape et objekt som er egnet for skriving. For å iterere dataene over radene, må vi bruke writerows () funksjon.

Her er vår CSV med dataene vi har skrevet til det.

Skrive til en CSV-fil ved hjelp av DictWriter

La oss skrive følgende data til en CSV.

data = ['Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': 'A', 'first_name': 'Rachael', 'last_name' 'Rodriguez', 'Grade': 'C', 'first_name': 'Tom', 'last_name': 'smith', 'Grade': 'B', 'first_name': 'Jane', 'siste navn ':' Oscar ', ' Grade ':' A ',' first_name ':' Kennzy ',' last_name ':' Tim '] 

Koden er som vist nedenfor.

importer csv med åpen ('example4.csv', 'w') som csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] writer = csv.DictWriter (csvfile, fieldnames = fieldnames) writer.writeheader writer.writerow ('Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian') writer.writerow ('Grade': 'A', 'first_name': 'Rachael' , 'Last_name': 'Rodriguez') writer.writerow ('Grade': 'B', 'first_name': 'Jane', 'last_name': 'Oscar') writer.writerow ('Grade' B ',' first_name ':' Jane ',' last_name ':' Loive ') print ("Skriving fullført")

Vi definerer først feltnavn, som vil representere overskriftene til hver kolonne i CSV-filen. De writerrow () Metoden vil skrive til en rad om gangen. Hvis du vil skrive alle dataene på en gang, vil du bruke writerrows () metode.

Slik skriver du til alle rader samtidig.

importer csv med åpen ('example5.csv', 'w') som csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] writer = csv.DictWriter (csvfile, fieldnames = fieldnames) writer.writeheader writer.writerows (['Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': 'A', 'first_name': 'Rachael', 'last_name ':' Rodriguez ', ' Grade ':' C ',' first_name ':' Tom ',' last_name ':' smith ', ' Grade ':' B ',' first_name ':' Jane ' 'Last_name': 'Oscar', 'Grade': 'A', 'first_name': 'Kennzy', 'last_name': 'Tim']) print

Konklusjon

Denne opplæringen har dekket det meste av det som kreves for å kunne lese og skrive til en CSV-fil ved hjelp av de forskjellige funksjonene og klassene som tilbys av Python. CSV-filer har blitt mye brukt i programmer, fordi de er enkle å lese og administrere, og deres lille størrelse gjør dem relativt raske til å behandle og overføre.

Ikke nøl med å se hva vi har tilgjengelig for salg og for studier på markedet, og ikke nøl med å stille spørsmål og gi din verdifulle tilbakemelding ved å bruke feedet under.

Lær python

Lær Python med vår komplette pythonveiledning, enten du er bare i gang eller du er en erfaren coder som ønsker å lære nye ferdigheter..