Cum se citește și se scrie fișierele CSV în Python

Formatul CSV este cel mai frecvent utilizat format de import și export pentru baze de date și foi de calcul. Acest tutorial va oferi o prezentare detaliată a fișierelor CSV și a modulelor și claselor disponibile pentru citirea și scrierea datelor în fișierele CSV. Acesta va acoperi, de asemenea, un exemplu de lucru pentru a vă arăta cum să citiți și să scrieți date într-un fișier CSV din Python.

Ce este un fișier CSV?

Un fișier CSV (valori separate prin virgulă) permite salvarea datelor într-o structură tabulară cu extensia .csv. Fișierele CSV au fost utilizate pe scară largă în aplicațiile de comerț electronic, deoarece sunt considerate foarte ușor de procesat. Unele dintre zonele în care au fost utilizate includ:

  • importul și exportul datelor despre clienți
  • importul și exportul de produse
  • exportul comenzilor
  • exportând rapoarte analitice de comerț electronic

Module de citire și scriere

Modulul CSV are mai multe funcții și clase disponibile pentru citirea și scrierea fișierelor CSV și include:

  • funcția csv.reader
  • funcția csv.writer
  • csv.Dictwriter class
  • csv.DictReader clasa

csv.reader

Modulul csv.reader ia următorii parametri:

  • csvfile: Acesta este, de obicei, un obiect care acceptă protocolul iterator și, de obicei, returnează un șir de fiecare dată când este __Următor →__() se numește metoda.
  • dialect = 'Excel': Un parametru opțional utilizat pentru a defini un set de parametri specifici unui anumit dialect CSV.
  • fmtparams: Un parametru opțional care poate fi utilizat pentru a suprascrie parametrii existenți de formatare.

Iată un exemplu de utilizare a modulului csv.reader.

import csv cu open ('example.csv', newline = ") ca fișier: reader = csv.reader (fișier) pentru rând în cititor: print (rând)

modul csv.writer

Acest modul este similar modulului csv.reader și se utilizează pentru a scrie date într-un CSV. Este nevoie de trei parametri:

  • csvfile: Acestpoate safi orice obiect cu a scrie() metodă.
  • dialect = 'Excel': Un parametru opțional utilizat pentru a defini un set de parametri specifici unui anumit CSV.
  • fmtparam: Un parametru opțional care poate fi utilizat pentru a suprascrie parametrii existenți de formatare.

Clasele DictReader și DictWriter

DictReader și DictWriter sunt clase disponibile în Python pentru citirea și scrierea în CSV. Deși sunt similare cu funcțiile cititorului și scriitorului, aceste clase utilizează obiecte din dicționar pentru a citi și scrie în fișiere csv.

DictReader

Creează un obiect care hărtește informațiile citite într-un dicționar ale cărui chei sunt date de către fieldnames parametru. Acest parametru este opțional, dar când nu este specificat în fișier, datele din primul rând devin cheile dicționarului.

Exemplu:

import csv cu open ('name.csv') ca csvfile: reader = csv.DictReader (csvfile) pentru rând în cititor: print (rând ['first_name'], row ['last_name' 

DictWriter

Această clasă este similară cu cea din clasa DictWriter și face opusul, care scrie date într-un fișier CSV. Clasa este definită ca csv.DictWriter(csvfile, fieldnames, restval =“, extrasaction = 'ridica', dialect = 'Excel', * args, **kwds)

fieldnames parametrul definește secvența de taste care identifică ordinea în care valorile din dicționar sunt înscrise în fișierul CSV. Spre deosebire de DictReader, această cheie nu este opțională și trebuie definită pentru a evita erorile la scrierea unui CSV.

Dialecte și Formatare

Un dialect este o clasă helper utilizată pentru a defini parametrii pentru un anumit tip cititor sau scriitor instanță. Dialectele și parametrii de formatare trebuie să fie declarați la efectuarea unei funcții de citire sau de scriere.

Există mai multe atribute care sunt susținute de un dialect:

  • delimitator: Un șir folosit pentru a separa câmpurile. Este implicit ''.
  • citat dublu: Controlează modul în care instanțele quotechar care apar în interiorul unui câmp trebuie citat. Poate fi adevărat sau fals.
  • escapechar: Un șir folosit de scriitor pentru a scăpa de delimitator dacă citând este setat sa QUOTE_NONE.
  • lineterminator: Un șir folosit pentru a termina liniile produse de scriitor. Este implicit '\ R \ n'.
  • quotechar: Un șir folosit pentru a cita câmpuri care conțin caractere speciale. Este implicit„"“.
  • skipinitialspace: Dacă este setat la Adevărat, orice spațiu alb imediat după delimitator este ignorată.
  • strict: Dacă este setat laAdevărat, ridică o excepție Eroare la intrarea CSV necorespunzătoare.
  • citând: Controlează când citatele ar trebui generate atunci când citiți sau scrieți la un CSV.

Citirea unui fișier CSV

Să vedem cum să citim un fișier CSV folosind modulele de ajutor pe care le-am discutat mai sus.

Creați fișierul CSV și salvați-l ca example.csv. Asigurați-vă că are .csv extinderea și completarea unor date. Aici avem fișierul CSV care conține numele studenților și notele lor.

Mai jos este codul pentru citirea datelor din CSV-ul nostru folosind ambele csv.reader și funcția csv.DictReader clasă.

Citirea unui fișier CSV cu csv.reader

csv.reader (fișier, delimiter = "," quotechar = "," quoting = csv.QUOTE_MINIMAL) pentru rând în cititor: print (rând) 

În codul de mai sus, importăm modulul CSV și apoi deschidem fișierul CSV ca fiind Fişier. Apoi definim obiectul cititorului și folosim csv.reader metoda de extragere a datelor în obiect. Apoi repetam peste cititor obiect și de a prelua fiecare rând de date noastre.

Afișăm datele citite imprimând conținutul lor în consola. De asemenea, am specificat parametrii necesari, cum ar fi delimiter, quotechar și citarea.

producție

['nume', 'ultimul nume', 'grad'] ['Alex', 'Brian', 'B'] ['Rachael', 'Rodriguez', 'A'] „] 

Citirea unui fișier CSV cu DictReader

După cum am menționat mai sus, DictWriter ne permite să citim un fișier CSV prin maparea datelor într-un dicționar în loc de șiruri de caractere, ca în cazul csv.reader modul. Deși numele câmpului este un parametru opțional, este important să aveți întotdeauna coloanele dvs. etichetate pentru a fi citite.

Iată cum puteți citi un CSV utilizând clasa DictWriter.

import csv results = [] cu open ('example.csv') ca fișier: reader = csv.DictReader (File) pentru rând în cititor: results.append (row) 

Importem mai întâi modulul csv și inițializăm o listă goală rezultate pe care o vom folosi pentru a stoca datele preluate. Apoi definim obiectul cititorului și folosim csv.DictReader metoda de extragere a datelor în obiect. Apoi repetam peste cititor obiect și de a prelua fiecare rând de date noastre.

În cele din urmă, adăugăm fiecare rând la lista de rezultate și tipărim conținutul în consolă.

producție

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

După cum puteți vedea mai sus, folosirea clasei DictReader este mai bună deoarece ne dă datele într-un format de dicționar care este mai ușor de utilizat cu.

Scrierea într-un fișier CSV

Să vedem acum cum să procedăm la scrierea datelor într-un fișier CSV utilizând csv.writer și funcția csv.Dictwriter clasa discutată la începutul acestui tutorial.

Scrierea într-un fișier CSV utilizând csv.writer

Codul de mai jos scrie datele definite la example2.csv fişier.

importul csv myData = [["first_name", "second_name", "Grad"], ['Alex', 'Brian', 'A'], ('example2.csv', 'w') cu imprimare myFile: writer = csv.writer (myFile) writer.writerows (myData) ("Scrierea completă") 

Mai întâi vom importa modulul csv și scriitor() funcția va crea un obiect adecvat pentru scriere. Pentru a itera datele peste rânduri, va trebui să folosim writerows () funcţie.

Iată CSV-ul nostru cu datele pe care le-am scris.

Scrierea la un fișier CSV utilizând DictWriter

Să scriem următoarele date într-un CSV.

data = 'Grad': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grad': 'A', 'first_name': 'Rachael', 'last_name': "Rodriguez", 'Grad': 'C', 'first_name': 'Tom', 'last_name': 'smith', 'Grade': ' ':' Oscar ', ' Grad ':' A ',' first_name ':' Kennzy ',' last_name ':' Tim '] 

Codul este după cum se arată mai jos.

import csv cu open ('example4.csv', 'w') ca csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] writer = csv.DictWriter writers.writeheader writer.writerow ('Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian' , 'last_name': 'Rodriguez') writer.writerow ('Grade': 'B', 'first_name': 'Jane' B ',' first_name ':' Jane ',' last_name ':' Loive ') print ("Scrierea completă")

Mai întâi definim fieldnames, care va reprezenta titlurile fiecărei coloane din fișierul CSV. writerrow () metoda va scrie la un rând la un moment dat. Dacă doriți să scrieți toate datele simultan, veți folosi writerrows () metodă.

Iată cum puteți scrie toate rândurile simultan.

import csv cu open ('example5.csv', 'w') ca csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] writer = csv.DictWriter (csvfile, writer.writerows (['Grad': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': ' ':' Rodriguez ', ' Grad ':' C ',' first_name ':' Tom ',' last_name ':' smith ', ' Grade ' 'last_name': 'Oscar', 'Grad': 'A', 'first_name': 'Kennzy', 'last_name': 'Tim']) print

Concluzie

Acest tutorial a acoperit majoritatea a ceea ce este necesar pentru a putea citi și scrie cu succes într-un fișier CSV folosind diferitele funcții și clase furnizate de Python. Fișierele CSV au fost utilizate pe scară largă în aplicațiile software deoarece sunt ușor de citit și gestionate, iar mărimea lor mică le face relativ rapide pentru procesare și transfer.

Nu ezitați să vedeți ceea ce avem la dispoziție pentru vânzare și pentru a studia pe piață și nu ezitați să puneți întrebări și să oferiți feedback-ul dvs. valoros utilizând feedul de mai jos.

Aflați Python

Aflați Python cu ghidul nostru complet de instrucțiuni Python, indiferent dacă sunteți doar începători sau sunteți un coder experimentat în căutarea unor noi abilități.

Cod