Så här läser och skriver du CSV-filer i Python

CSV-formatet är det vanligaste importerings- och exportformatet för databaser och kalkylblad. Denna handledning ger en detaljerad introduktion till CSV: er och moduler och klasser som är tillgängliga för att läsa och skriva data till CSV-filer. Det kommer också att omfatta ett fungerande exempel för att visa hur du läser och skriver data till en CSV-fil i Python.

Vad är en CSV-fil?

En CSV-fil (kommaseparerade värden) tillåter att data sparas i en tabellstruktur med en .csv-förlängning. CSV-filer har använts i stor utsträckning i e-handelsapplikationer eftersom de anses vara mycket lätta att bearbeta. Några av de områden där de har använts inkluderar:

  • importera och exportera kunddata
  • importera och exportera produkter
  • exportorder
  • exportera analysrapporter för e-handel

Reader och Writer Modules

CSV-modulen har flera funktioner och klasser tillgängliga för läsning och skrivning av CSV: er, och de inkluderar:

  • csv.reader-funktionen
  • csv.writer funktionen
  • csv.Dictwriter-klassen
  • csv.DictReader klass

csv.reader

Csv.reader-modulen har följande parametrar:

  • csvfile: Detta är vanligtvis ett objekt som stöder iteratorprotokollet och returnerar vanligtvis en sträng varje gång dess __Nästa__() Metoden heter.
  • dialekt = 'excel': En valfri parameter som används för att definiera en uppsättning parametrar som är specifika för en viss CSV-dialekt.
  • fmtparams: En valfri parameter som kan användas för att åsidosätta befintliga formateringsparametrar.

Här är ett exempel på hur du använder csv.reader-modulen.

importera csv med öppen ('example.csv', newline = ") som fil: läsare = csv.reader (fil) för rad i läsare: skriv ut (rad)

csv.writer-modulen

Den här modulen liknar csv.reader-modulen och används för att skriva data till en CSV. Det tar tre parametrar:

  • csvfile: Dettakanvara något föremål med a skriva() metod.
  • dialekt = 'excel': En valfri parameter som används för att definiera en uppsättning parametrar som är specifika för en viss CSV.
  • fmtparam: En valfri parameter som kan användas för att åsidosätta befintliga formateringsparametrar.

DictReader och DictWriter Classes

DictReader och DictWriter är klasser som finns tillgängliga i Python för att läsa och skriva till CSV. Även om de liknar läsaren och författarens funktioner, använder dessa klasser ordlighetsobjekt för att läsa och skriva till csv-filer.

DictReader

Det skapar ett objekt som kartlägger informationen läsas i en ordlista vars nyckelord ges av fältnamn parameter. Den här parametern är frivillig, men när den inte anges i filen blir data i den första raden ordlistorna.

Exempel:

importera csv med öppen ('name.csv') som csvfile: reader = csv.DictReader (csvfile) för rad i läsare: skriv ut (rad ['first_name'], rad ['last_name']) 

DictWriter

Denna klass liknar DictWriter-klassen och gör motsatsen, som skriver data till en CSV-fil. Klassen definieras som csv.DictWriter(csvfile, fältnamn, restval =", extrasaction = 'höjning', dialekt = 'excel', * args, **kwds)

De fältnamn parameter definierar sekvensen av nycklar som identifierar den ordning i vilka värden i ordlistan är skrivna till CSV-filen. Till skillnad från DictReader är den här nyckeln inte valfri och måste definieras för att undvika fel när man skriver till en CSV.

Dialekter och formatering

En dialekt är en hjälpklass som används för att definiera parametrarna för en specifik läsare eller författare exempel. Dialekter och formateringsparametrar måste deklareras när en läsare eller författarfunktion utförs.

Det finns flera attribut som stöds av en dialekt:

  • avgränsare: En sträng som användes för att separera fält. Det är standard för ''.
  • dubbel citat: Kontrollerar hur instanser av quotechar visas inom ett fält bör citeras. Kan vara sant eller falskt.
  • escapechar: En sträng som används av författaren att fly från avgränsare om citera är satt till QUOTE_NONE.
  • lineterminator: En sträng som används för att säga upp linjer som produceras av författare. Det är standard för '\ R \ n'.
  • quotechar: En sträng som används för att citera fält som innehåller specialtecken. Det är standard för'"'.
  • skipinitialspace: Om den är inställd på Sann, något vitt utrymme omedelbart efter avgränsare ignoreras.
  • sträng: Om den är inställd påSann, Det ger upphov till ett undantag Fel på dålig CSV-ingång.
  • citera: Kontrollerar när citat ska genereras när man läser eller skriver till en CSV.

Läser en CSV-fil

Låt oss se hur du läser en CSV-fil med hjälp av hjälparmodulerna som vi har diskuterat ovan.

Skapa din CSV-fil och spara den som example.csv. Se till att den har .csv förlängning och fyll i några data. Här har vi vår CSV-fil som innehåller namnen på studenter och deras betyg.

Nedan finns koden för att läsa data i vår CSV med både csv.reader funktion och csv.DictReader klass.

Läser en CSV-fil med csv.reader

importera csv med öppen ('example.csv') som fil: läsare = csv.reader (Fil, delimiter = ",", quotechar = ",", citat = csv.QUOTE_MINIMAL) för rad i läsare: skriv ut 

I koden ovan importerar vi CSV-modulen och öppnar sedan vår CSV-fil som Fil. Vi definierar sedan läsarobjektet och använder csv.reader metod för att extrahera data till objektet. Vi sedan iterera över läsare objekt och hämta varje rad av våra data.

Vi visar läsdata genom att skriva ut innehållet till konsolen. Vi har också angett de parametrar som krävs, t.ex. avgränsare, citat och citat.

Produktion

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

Läser en CSV-fil med DictReader

Som vi nämnde ovan tillåter DictWriter oss att läsa en CSV-fil genom att kartlägga data i en ordlista istället för strängar som i fallet med csv.reader modul. Även om fältnamnet är en valfri parameter är det viktigt att alltid ha dina kolumner märkta för läsbarhet.

Så här läser du en CSV med DictWriter-klassen.

importera csv results = [] med öppen ('example.csv') som File: reader = csv.DictReader (File) för rad i läsaren: results.append (row) utskriftsresultat 

Vi importerar först csv-modulen och initierar en tom lista resultat som vi kommer att använda för att lagra data som hämtats. Vi definierar sedan läsarobjektet och använder csv.DictReader metod för att extrahera data till objektet. Vi sedan iterera över läsare objekt och hämta varje rad av våra data.

Slutligen lägger vi varje rad i resultatlistan och skriver ut innehållet till konsolen.

Produktion

['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 ovan är det bättre att använda DictReader-klassen eftersom det ger ut våra data i ett ordbordsformat som är lättare att arbeta med.

Skriva till en CSV-fil

Låt oss nu se hur man går till att skriva data till en CSV-fil med hjälp av csv.writer funktion och csv.Dictwriter klass diskuteras i början av denna handledning.

Skriva till en CSV-fil med hjälp av csv.writer

Koden nedan skriver data som definierats till example2.csv fil.

importera csv myData = [["first_name", "second_name", "Grade"], ['Alex', 'Brian', 'A'], ['Tom', 'Smith', 'B']] myFile = öppen ('example2.csv', 'w') med myFile: writer = csv.writer (myFile) writer.writerows (myData) utskrift ("Skrivning komplett") 

Först importerar vi csv-modulen, och författare() funktionen skapar ett objekt som är lämpligt för skrivning. För att iterera data över raderna måste vi använda writerows () fungera.

Här är vår CSV med de data vi har skrivit till den.

Skriva till en CSV-fil med DictWriter

Låt oss skriva följande data till 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', 'sista_namn ':' Oscar ', ' Grade ':' A ',' first_name ':' Kennzy ',' last_name ':' Tim '] 

Koden är som visas nedan.

importera csv med öppen ('example4.csv', 'w') som csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] skrivare = 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 ("Skrivning komplett")

Vi definierar först fältnamn, som representerar rubrikerna för varje kolumn i CSV-filen. De writerrow () Metoden kommer att skrivas till en rad i taget. Om du vill skriva alla data på en gång kommer du att använda writerrows () metod.

Så här skriver du till alla raderna samtidigt.

importera csv med öppen ('example5.csv', 'w') som csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] skrivare = 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

Slutsats

Denna handledning har täckt det mesta av vad som krävs för att kunna läsa och skriva till en CSV-fil med de olika funktionerna och klasserna som tillhandahålls av Python. CSV-filer har använts i stor utsträckning i mjukvaruapplikationer eftersom de är lätta att läsa och hantera och deras lilla storlek gör dem relativt snabba att bearbeta och överföra.

Tveka inte att se vad vi har till salu och studera på marknaden, och tveka inte att ställa några frågor och ge din värdefulla feedback genom att använda foderet nedan.

Lär Python

Lär dig Python med vår kompletta handledning för pythonhandledning, oavsett om du bara har börjat eller du är en erfaren kodare som vill lära dig nya färdigheter.