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.
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:
De CSV-module heeft verschillende functies en klassen die beschikbaar zijn voor het lezen en schrijven van CSV's, en ze omvatten:
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)
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.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.
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'])
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.
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:
''
.QUOTE_NONE
.auteur
. Het is standaard ingesteld op '\ R \ n'
.'''
.waar
, elke witruimte onmiddellijk volgend op de scheidingsteken wordt genegeerd.waar
, het verhoogt een uitzondering Fout bij slechte CSV-invoer.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.
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 ']
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.
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.
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.
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")
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 met onze complete python-handleiding, of je nu net begint of dat je een ervaren coder bent die op zoek is naar nieuwe vaardigheden.