CSV-bestanden lezen en schrijven in Python

Het CSV-formaat is het meest gebruikte import- en exportformaat voor databases en spreadsheets. Deze zelfstudie geeft een gedetailleerde introductie van CSV's en de modules en klassen die beschikbaar zijn voor het lezen en schrijven van gegevens naar CSV-bestanden. Het bevat ook een werkvoorbeeld om u te laten lezen en schrijven van gegevens naar een CSV-bestand in Python.

Wat is een CSV-bestand?

Met een CSV-bestand (comma separated values) kunnen gegevens worden opgeslagen in een tabelstructuur met de extensie .csv. CSV-bestanden zijn veelvuldig gebruikt in e-commerce-applicaties omdat ze als zeer eenvoudig te verwerken worden beschouwd. Sommige van de gebieden waar ze zijn gebruikt, zijn onder meer:

  • importeren en exporteren van klantgegevens
  • producten importeren en exporteren
  • bestellingen exporteren
  • export van e-commerce analytische rapporten

Reader- en Writer-modules

De CSV-module heeft verschillende functies en klassen die beschikbaar zijn voor het lezen en schrijven van CSV's, en ze omvatten:

  • csv.reader-functie
  • csv.writer-functie
  • csv.Dictwriter-klasse
  • csv.DictReader-klasse

csv.reader

De module csv.reader heeft de volgende parameters:

  • csvfile: Dit is meestal een object dat het iterator-protocol ondersteunt en meestal telkens een tekenreeks retourneert __next __ () methode wordt genoemd.
  • dialect = 'excel': Een optionele parameter die wordt gebruikt om een ​​reeks parameters specifiek voor een bepaald CSV-dialect te definiëren.
  • fmtparams: Een optionele parameter die kan worden gebruikt om bestaande opmaakparameters te overschrijven.

Hier is een voorbeeld van het gebruik van de module csv.reader.

importeer csv met open ('example.csv', newline = ") als Bestand: reader = csv.reader (Bestand) voor rij in lezer: print (rij)

csv.writermodule

Deze module is vergelijkbaar met de module csv.reader en wordt gebruikt om gegevens naar een CSV te schrijven. Het heeft drie parameters nodig:

  • csvfile: Dezekanwees een object met een schrijven() methode.
  • dialect = 'excel': Een optionele parameter die wordt gebruikt om een ​​set parameters te definiëren die specifiek zijn voor een bepaalde CSV.
  • fmtparam: Een optionele parameter die kan worden gebruikt om bestaande opmaakparameters te overschrijven.

DictReader en DictWriter Classes

De DictReader en DictWriter zijn klassen beschikbaar in Python voor lezen en schrijven naar CSV. Hoewel ze vergelijkbaar zijn met de lees- en schrijffuncties, gebruiken deze klassen woordenboekobjecten om csv-bestanden te lezen en te schrijven.

DictReader

Het maakt een object dat de informatie inleest die wordt gelezen in een woordenboek waarvan de sleutels worden gegeven door de veldnamen parameter. Deze parameter is optioneel, maar wanneer niet opgegeven in het bestand, worden de eerste rijgegevens de sleutels van het woordenboek.

Voorbeeld:

import csv met open ('naam.csv') als csvfile: reader = csv.DictReader (csvfile) voor rij in lezer: print (rij ['first_name'], row ['last_name']) 

DictWriter

Deze klasse is vergelijkbaar met de klasse DictWriter en doet het tegenovergestelde, namelijk het schrijven van gegevens naar een CSV-bestand. De klasse is gedefinieerd als csv.DictWriter(csvfile, veldnamen, restval =", extrasaction = 'raise', dialect = 'excel', * args, **kwds)

De veldnamen parameter definieert de reeks toetsen die de volgorde bepalen waarin waarden in het woordenboek naar het CSV-bestand worden geschreven. In tegenstelling tot de DictReader is deze sleutel niet optioneel en moet deze worden gedefinieerd om fouten bij het schrijven naar een CSV te voorkomen.

Dialecten en formatteren

Een dialect is een helperklasse die wordt gebruikt om de parameters voor een specifiek te definiëren lezer of auteur aanleg. Dialecten en opmaakparameters moeten worden gedeclareerd bij het uitvoeren van een lezer- of schrijverfunctie.

Er zijn verschillende kenmerken die worden ondersteund door een dialect:

  • scheidingsteken: Een tekenreeks die wordt gebruikt om velden te scheiden. Het is standaard ingesteld op ''.
  • dubbele aanhalingstekens: Bepaalt hoe instanties van quotechar verschijnen binnen een veld moet worden aangehaald. Kan waar of niet waar zijn.
  • escapechar: Een tekenreeks gebruikt door de schrijver om te ontsnappen aan de scheidingsteken als citeren ingesteld op QUOTE_NONE.
  • lineterminator: Een tekenreeks die wordt gebruikt voor het beëindigen van regels die worden geproduceerd door de auteur. Het is standaard ingesteld op '\ R \ n'.
  • quotechar: Een tekenreeks die wordt gebruikt om velden met speciale tekens aan te duiden. Het is standaard ingesteld op'''.
  • skipinitialspace: Indien ingesteld op waar, elke witruimte onmiddellijk volgend op de scheidingsteken wordt genegeerd.
  • streng: Indien ingesteld opwaar, het verhoogt een uitzondering Fout bij slechte CSV-invoer.
  • citeren: Bepaalt wanneer offertes moeten worden gegenereerd bij het lezen of schrijven naar een CSV.

Een CSV-bestand lezen

Laten we eens kijken hoe een CSV-bestand te lezen met behulp van de helper-modules die we hierboven hebben besproken.

Maak uw CSV-bestand en sla het op als example.csv. Zorg ervoor dat het de .csv uitbreiding en vul enkele gegevens in. Hier hebben we ons CSV-bestand met de namen van studenten en hun cijfers.

Hieronder staat de code voor het lezen van de gegevens in onze CSV met behulp van de csv.reader functie en de csv.DictReader klasse.

Een CSV-bestand lezen met csv.reader

import csv met open ('example.csv') als Bestand: reader = csv.reader (Bestand, scheidingsteken = ",", quotechar = ",", quoting = csv.QUOTE_MINIMAL) voor rij in lezer: print (rij) 

In de bovenstaande code importeren we de CSV-module en openen vervolgens ons CSV-bestand als het dossier. Vervolgens definiëren we het reader-object en gebruiken we het csv.reader methode om de gegevens in het object te extraheren. We herhalen vervolgens de lezer object en haal elke rij met onze gegevens op.

We tonen de gelezen gegevens door de inhoud ervan op de console af te drukken. We hebben ook de vereiste parameters gespecificeerd, zoals delimiter, quotechar en quoting.

uitgang

['voornaam', 'achternaam', 'cijfer'] ['Alex', 'Brian', 'B'] ['Rachael', 'Rodriguez', 'A'] ['Tom', 'smith', 'C '] 

Een CSV-bestand lezen met DictReader

Zoals we hierboven vermeldden, staat DictWriter ons toe om een ​​CSV-bestand te lezen door de gegevens aan een woordenboek toe te wijzen in plaats van strings zoals in het geval van de csv.reader module. Hoewel de veldnaam een ​​optionele parameter is, is het belangrijk dat uw kolommen altijd zijn gelabeld voor leesbaarheid.

Hier leest u hoe u een CSV leest met de klasse DictWriter.

import csv resultaten = [] met open ('example.csv') als Bestand: reader = csv.DictReader (Bestand) voor rij in lezer: results.append (rij) afdrukresultaten 

We importeren eerst de csv-module en initialiseren een lege lijst uitslagen die we zullen gebruiken om de opgehaalde gegevens op te slaan. Vervolgens definiëren we het reader-object en gebruiken we het csv.DictReader methode om de gegevens in het object te extraheren. We herhalen vervolgens de lezer object en haal elke rij met onze gegevens op.

Ten slotte voegen we elke rij toe aan de resultatenlijst en drukt de inhoud af naar de console.

uitgang

['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'] 

Zoals je hierboven kunt zien, is het beter om de DictReader-klasse te gebruiken omdat deze onze gegevens weergeeft in een woordenboekindeling die gemakkelijker is om mee te werken.

Schrijven naar een CSV-bestand

Laten we nu kijken hoe we gegevens kunnen schrijven in een CSV-bestand met behulp van de csv.writer functie en de csv.Dictwriter les besproken aan het begin van deze tutorial.

Naar een CSV-bestand schrijven met csv.writer

De onderstaande code schrijft de gegevens die zijn gedefinieerd voor de example2.csv het dossier.

import csv myData = [["first_name", "second_name", "Grade"], ['Alex', 'Brian', 'A'], ['Tom', 'Smith', 'B']] myFile = open ('example2.csv', 'w') met myFile: writer = csv.writer (myFile) writer.writerows (myData) print ("Writing complete") 

Eerst importeren we de csv-module en de auteur() functie maakt een object dat geschikt is om te schrijven. Om de gegevens over de rijen te herhalen, moeten we de writerows () functie.

Dit is ons CSV-bestand met de gegevens die we ernaar hebben geschreven.

Naar een CSV-bestand schrijven met DictWriter

Laten we de volgende gegevens naar een CSV schrijven.

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', 'last_name ':' Oscar ', ' Grade ':' A ',' first_name ':' Kennzy ',' last_name ':' Tim '] 

De code is zoals hieronder getoond.

importeer csv met open ('example4.csv', 'w') als 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 ("Schrijven voltooid")

We definiëren eerst de veldnamen, die de kopjes van elke kolom in het CSV-bestand zal vertegenwoordigen. De writerrow () methode schrijft naar één rij tegelijk. Als u alle gegevens in één keer wilt schrijven, gebruikt u de writerrows () methode.

Hier leest u hoe u alle rijen in één keer kunt schrijven.

importeer csv met open ('example5.csv', 'w') als 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 ("schrijven voltooid")

Conclusie

Deze tutorial heeft het grootste deel van wat nodig is om met succes een CSV-bestand te lezen en te schrijven met de verschillende functies en klassen van Python. CSV-bestanden zijn op grote schaal gebruikt in softwaretoepassingen omdat ze gemakkelijk te lezen en te beheren zijn en hun kleine formaat maakt ze relatief snel te verwerken en over te dragen.

Aarzel niet om te zien wat we beschikbaar hebben voor de verkoop en voor studie in de markt, en aarzel niet om vragen te stellen en uw waardevolle feedback te geven met behulp van de onderstaande feed.

Leer Python

Leer Python met onze complete python-handleiding, of je nu net begint of dat je een ervaren coder bent die op zoek is naar nieuwe vaardigheden.