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.
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:
CSV-modulen har flera funktioner och klasser tillgängliga för läsning och skrivning av CSV: er, och de inkluderar:
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)
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 ä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.
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'])
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.
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:
''
.QUOTE_NONE
.författare
. Det är standard för '\ R \ n'
.'"'
.Sann
, något vitt utrymme omedelbart efter avgränsare ignoreras.Sann
, Det ger upphov till ett undantag Fel på dålig CSV-ingång.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.
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 ']
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.
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.
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.
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
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 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.