CSV faila formātu visbiežāk izmanto datu bāzu un izklājlapu uzturēšanai. Pirmo rindu CSV failā visbiežāk izmanto kolonnu lauku definēšanai, bet visas pārējās atlikušās rindas tiek uzskatītas par rindām. Šī struktūra ļauj lietotājiem uzrādīt tabulas datus, izmantojot CSV failus. CSV failus var rediģēt jebkurā teksta redaktorā. Tomēr tādas lietojumprogrammas kā LibreOffice Calc nodrošina uzlabotus rediģēšanas rīkus, kārtošanas un filtrēšanas funkcijas.
Datu lasīšana no CSV failiem, izmantojot Python
CSV modulis Python ļauj lasīt, rakstīt un manipulēt ar visiem CSV failos saglabātajiem datiem. Lai lasītu CSV failu, jums būs jāizmanto metode “lasītājs” no Python “csv” moduļa, kas ir iekļauta Python standarta bibliotēkā.
Uzskatiet, ka jums ir CSV fails, kurā ir šādi dati:
Mango, banāns, ābols, apelsīns50,70,30,90
Faila pirmajā rindā ir definēta katra kolonnu kategorija, šajā gadījumā augļu nosaukums. Otrajā rindiņā vērtības tiek glabātas zem katras kolonnas (krājums rokā). Visas šīs vērtības ir atdalītas ar komatu. Ja atvērtu šo failu izklājlapas lietojumprogrammā, piemēram, LibreOffice Calc, tas izskatās šādi:
Tagad, lai lasītu vērtības no “augļiem.csv ”failu, izmantojot Python modeli“ csv ”, jums būs jāizmanto“ lasītāja ”metode šādā formātā:
importēt csvar atvērtiem ("augļi.csv ") kā fails:
data_reader = csv.lasītājs (fails)
līnijai data_reader:
izdruka (līnija)
Iepriekšējā parauga pirmajā rindiņā tiek importēts “csv” modulis. Pēc tam paziņojums “ar atvērtu” tiek izmantots, lai droši atvērtu cietajā diskā saglabāto failu (“augļi.csv ”(šajā gadījumā). Jauns objekts “data_reader” tiek izveidots, izsaucot metodi “lasītājs” no moduļa “csv”. Šī “lasītāja” metode kā obligātu argumentu ņem faila nosaukumu, tāpēc atsauce uz “augļi.csv ”tiek nodota tai. Pēc tam tiek palaists cikla priekšraksts “par”, lai izdrukātu katru rindiņu no “augļiem”.csv ”fails. Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:
['50', '70', '30', '90']Ja vēlaties piešķirt rindas numurus izvadei, varat izmantot funkciju “uzskaitīt”, kas piešķir katram skaitam iterējamā vienuma numuru (sākot no 0, ja vien tas nav mainīts).
importēt csvar atvērtiem ("augļi.csv ") kā fails:
data_reader = csv.lasītājs (fails)
indeksam, rinda uzskaitījumā (data_reader):
drukāt (rādītājs, līnija)
Mainīgais “index” saglabā katra elementa skaitu. Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:
0 ['Mango', 'Banāns', 'Ābols', 'Apelsīns']1 ['50', '70', '30', '90']
Tā kā faila “csv” pirmajā rindiņā parasti ir kolonnu virsraksti, šo virsrakstu izgūšanai varat izmantot funkciju “uzskaitīt”:
importēt csvar atvērtiem ("augļi.csv ") kā fails:
data_reader = csv.lasītājs (fails)
indeksam, rinda uzskaitījumā (data_reader):
ja indekss == 0:
virsraksti = rinda
drukāt (virsraksti)
Bloks “ja” iepriekšminētajā paziņojumā pārbauda, vai indekss ir vienāds ar nulli (pirmā rinda “augļos.csv ”fails). Ja jā, tad mainīgā “line” vērtība tiek piešķirta jaunam “headings” mainīgajam. Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:
['Mango', 'Banāns', 'Ābols', 'Apelsīns']Ņemiet vērā, ka, izsaucot “csv, varat izmantot savu atdalītāju.lasītājs ”metodi, izmantojot izvēles argumentu“ norobežotājs ”šādā formātā:
importēt csvar atvērtiem ("augļi.csv ") kā fails:
data_reader = csv.lasītājs (fails, norobežotājs = ";")
līnijai data_reader:
druka (līnija)
Tā kā csv failā katra kolonna ir saistīta ar vērtībām pēc kārtas, iespējams, vēlēsities izveidot objektu Python “vārdnīca”, lasot datus no “csv” faila. Lai to izdarītu, jums jāizmanto metode “DictReader”, kā parādīts zemāk esošajā kodā:
importēt csvar atvērtiem ("augļi.csv ") kā fails:
data_reader = csv.DictReader (fails)
līnijai data_reader:
izdruka (līnija)
Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'Tātad tagad jums ir vārdnīcas objekts, kas atsevišķas kolonnas saista ar tām atbilstošajām vērtībām rindās. Tas darbojas lieliski, ja jums ir tikai viena rinda. Pieņemsim, ka “augļi.csv ”failā tagad ir iekļauta papildu rinda, kas norāda, cik dienas būs nepieciešamas, lai augļu krājumi pazustu.
Mango, banāns, ābols, apelsīns50,70,30,90
3,1,6,4
Ja jums ir vairākas rindas, izpildot vienu un to pašu koda paraugu iepriekš, tiks iegūta atšķirīga izeja.
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90''Mango': '3', 'Banana': '1', 'Apple': '6', 'Orange': '4'
Tas, iespējams, nav ideāli, jo visas Python vārdnīcas vērtības, kas attiecas uz vienu kolonnu, varat kartēt ar vienu atslēgas-vērtību pāri. Tā vietā izmēģiniet šo koda paraugu:
importēt csvar atvērtiem ("augļi.csv ") kā fails:
data_reader = csv.DictReader (fails)
data_dict =
līnijai data_reader:
atslēgai vērtība rindā.preces ():
data_dict.setdefault (atslēga, [])
data_dict [atslēga].pievienot (vērtība)
drukāt (data_dict)
Pēc iepriekš minētā koda parauga palaišanas jums jāiegūst šāda izeja:
'Mango': ['50', '3'], 'Banāns': ['70', '1'], 'Apple': ['30', '6'], 'Oranžs': ['90 ',' 4 ']Cilpa “par” tiek izmantota katram objekta “DictReader” elementam, lai cilpa pāri atslēgu un vērtību pāriem. Pirms tam ir definēts jauns Python vārdnīcas mainīgais “data_dict”. Tajā tiks glabāti galīgie datu kartējumi. Otrajā cilpas blokā “for” tiek izmantota Python vārdnīcas metode “setdefault”. Šī metode vārdnīcas atslēgai piešķir vērtību. Ja atslēgu un vērtību pāris nepastāv, no norādītajiem argumentiem tiek izveidots jauns. Tātad šajā gadījumā atslēgai tiks piešķirts jauns tukšs saraksts, ja tas vēl nepastāv. Visbeidzot, “vērtība” tiek pievienota atbilstošajai atslēgai galīgajā objektā “data_dict”.
Datu rakstīšana CSV failā
Lai ierakstītu datus “csv” failā, jums būs jāizmanto “rakstītāja” metode no “csv” moduļa. Tālāk sniegtajā piemērā esošajām “augļiem” tiks pievienota jauna rinda.csv ”fails.
importēt csvar atvērtiem ("augļi.csv "," a ") kā fails:
data_writer = csv.rakstnieks (fails)
datu rakstītājs.authorow ([3,1,6,4])
Ar pirmo paziņojumu fails tiek atvērts režīmā “pievienot”, ko apzīmē ar argumentu “a”. Tālāk tiek saukta “rakstnieka” metode un atsauce uz “augļiem.csv ”fails tiek nodots tam kā arguments. Metode “writerow” failā ieraksta vai pievieno jaunu rindu.
Ja vēlaties pārveidot Python vārdnīcu par “csv” faila struktūru un saglabāt izvadi “csv” failā, izmēģiniet šo kodu:
importēt csvar atvērtiem ("augļi.csv "," w ") kā fails:
virsraksti = ["Mango", "Banāns", "Ābols", "Apelsīns"]
data_writer = csv.DictWriter (fails, lauka nosaukumi = virsraksti)
datu rakstītājs.rakstīšanas virsraksts ()
datu rakstītājs.writerow ("Mango": 50, "Banāns": 70, "Ābols": 30, "Apelsīns": 90)
datu rakstītājs.writerow ("Mango": 3, "Banāns": 1, "Ābols": 6, "Apelsīns": 4)
Pēc tukša atvēršanas “augļi.csv ”failā, izmantojot“ ar atvērtu ”priekšrakstu, tiek definēts jauns mainīgais“ virsraksti ”, kas satur kolonnu virsrakstus. Jauns objekts “data_writer” tiek izveidots, izsaucot metodi “DictWriter” un nododot tam atsauci uz “augļiem”.csv ”fails un arguments“ fieldnames ”. Nākamajā rindā kolonnu virsraksti tiek ierakstīti failā, izmantojot metodi “writeheader”. Pēdējie divi priekšraksti attiecīgajām virsrakstiem, kas izveidoti iepriekšējā solī, pievieno jaunas rindas.
Secinājums
CSV faili nodrošina ērtu veidu, kā rakstīt datus tabulas formātā. Python iebūvētais “csv” modulis ļauj ērti apstrādāt “csv” failos pieejamos datus un ieviest tajā papildu loģiku.