Python

Kuidas käituda CSV-failides Pythonis

Kuidas käituda CSV-failides Pythonis
See artikkel hõlmab õpetust csv-failide töötlemiseks Pythoni abil. Termin „csv” tähistab komadega eraldatud väärtusi, kus iga rida või rida sisaldab komadega eraldatud tekstipõhiseid väärtusi. Mõnel juhul kasutatakse väärtuste eraldamiseks „koma” asemel ka semikoolonit. Kuid see ei tee failivormingu reeglitel suurt vahet ja loogika mõlemat tüüpi eraldajate käsitsemisel jääb samaks.

CSV-failivormingut kasutatakse kõige sagedamini andmebaaside ja arvutustabelite hooldamiseks. CSV-faili esimest rida kasutatakse kõige sagedamini veeruväljade määratlemiseks, ülejäänud ridu loetakse ridadeks. See struktuur võimaldab kasutajatel esitada tabeliandmeid CSV-failide abil. CSV-faile saab muuta mis tahes tekstiredaktoris. Kuid sellised rakendused nagu LibreOffice Calc pakuvad täiustatud redigeerimisvahendeid, sortimis- ja filtreerimisfunktsioone.

Andmete lugemine CSV-failidest Pythoni abil

Pythoni CSV-moodul võimaldab teil lugeda, kirjutada ja manipuleerida mis tahes CSV-failidesse salvestatud andmetega. CSV-faili lugemiseks peate kasutama Pythoni standardses teegis sisalduvat moodulit “lugeja” Pythoni moodulist “csv”.

Mõelge, et teil on CSV-fail, mis sisaldab järgmisi andmeid:

Mango, banaan, õun, apelsin
50,70,30,90

Faili esimene rida määratleb iga veeru kategooria ja sel juhul puuviljade nimed. Teine rida salvestab väärtused iga veeru alla (varud käes). Kõik need väärtused on eraldatud komaga. Kui peaksite selle faili avama arvutustabeli rakenduses nagu LibreOffice Calc, näeks see välja järgmine:

Nüüd lugege väärtusi lehelt “puuviljad.csv ”faili kasutades Pythoni“ csv ”moodulit, peate kasutama meetodit“ lugeja ”järgmises vormingus:

import csv
avatud ("puuviljad.csv ") failina:
data_reader = csv.lugeja (fail)
reale data_reader:
print (rida)

Ülaltoodud valimi esimene rida impordib mooduli “csv”. Järgmisena kasutatakse lauset “avatud”, et kõvakettale salvestatud fail turvaliselt avada (“puuviljad.csv ”(antud juhul). Uus objekt „data_reader” luuakse kutsudes moodulist „csv” meetod „reader”. See “lugeja” meetod võtab failinime kohustusliku argumendina, seega viide “puuviljadele”.csv ”edastatakse sellele. Järgmisena käivitatakse tsükli lause “for”, et printida kõik read “puuviljadest”.csv ”fail. Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

['50', '70', '30', '90']

Kui soovite väljundile määrata reanumbrid, võite kasutada funktsiooni „loendada”, mis määrab iteratsiooni igale üksusele numbri (alates 0-st, kui seda ei muudeta).

import csv
avatud ("puuviljad.csv ") failina:
data_reader = csv.lugeja (fail)
indeksi jaoks, rida loendis (data_reader):
print (register, rida)

Muutuja “indeks” hoiab iga elemendi arvu. Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

0 ['Mango', 'banaan', 'õun', 'apelsin']
1 ['50', '70', '30', '90']

Kuna faili „csv” esimene rida sisaldab tavaliselt veerupäiseid, saate nende pealkirjade väljavõtmiseks kasutada funktsiooni „loendada”:

import csv
avatud ("puuviljad.csv ") failina:
data_reader = csv.lugeja (fail)
indeksi jaoks, rida loendis (data_reader):
kui indeks == 0:
pealkirjad = rida
print (pealkirjad)

Eespool oleva lause lause „kui” kontrollib, kas indeks on võrdne nulliga („puuviljade esimene rida”).csv ”fail). Kui jah, siis määratakse muutuja „rida” väärtus uuele „pealkirja” muutujale. Pärast ülaltoodud koodiproovi käivitamist peaksite saama järgmise väljundi:

['Mango', 'banaan', 'õun', 'apelsin']

Pange tähele, et „csv.lugeja ”meetod, kasutades valikulist eraldaja argumenti järgmises vormingus:

import csv
avatud ("puuviljad.csv ") failina:
data_reader = csv.lugeja (fail, eraldaja = ";")
reale data_reader:
print (rida)

Kuna csv-failis on iga veerg seotud rea väärtustega, võiksite csv-failist andmeid lugedes luua Pythoni „sõnaraamatu” objekti. Selleks peate kasutama meetodit “DictReader”, nagu on näidatud allolevas koodis:

import csv
avatud ("puuviljad.csv ") failina:
data_reader = csv.DictReader (fail)
reale data_reader:
print (rida)

Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'

Nii et nüüd on teil sõnaraamatu objekt, mis seob üksikud veerud nende vastavate väärtustega ridades. See töötab hästi, kui teil on ainult üks rida. Oletame, et “viljad.fail csv ”sisaldab nüüd täiendavat rida, mis täpsustab, mitu päeva kulub puuviljavarude hävimisele.

Mango, banaan, õun, apelsin
50,70,30,90
3,1,6,4

Kui teil on mitu rida, annab sama koodinäidise käivitamine erineva väljundi.

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'
'Mango': '3', 'Banana': '1', 'Apple': '6', 'Orange': '4'

See ei pruugi olla ideaalne, sest võiksite Pythoni sõnastikus kaardistada kõik ühe veeru väärtused ühte võtmeväärtuste paari. Proovige selle asemel selle koodi näidist:

import csv
avatud ("puuviljad.csv ") failina:
data_reader = csv.DictReader (fail)
data_dict =
reale data_reader:
võtme jaoks väärtus reas.üksused ():
data_dict.setdefault (võti, [])
data_dict [võti].lisa (väärtus)
print (data_dict)

Pärast ülalnimetatud koodinäidise käivitamist peaksite saama järgmise väljundi:

'Mango': ['50', '3'], 'banaan': ['70', '1'], 'õun': ['30', '6'], 'oranž': ['90 ',' 4 ']

Silmust “for” kasutatakse objekti “DictReader” igal elemendil, et liikuda üle võtme-väärtuse paaride. Enne seda on määratletud uus Pythoni sõnaraamatu muutuja “data_dict”. See salvestab andmete lõplikud vastendused. Teise silmuseploki “for” all kasutatakse Pythoni sõnaraamatu meetodit “setdefault”. See meetod määrab sõnastiku võtmele väärtuse. Kui võtme-väärtuste paari pole olemas, luuakse määratud argumentidest uus. Nii et sel juhul määratakse võtmele uus tühi loend, kui seda pole veel olemas. Lõpuks lisatakse "väärtus" vastavasse võtmesse viimases objektis "data_dict".

Andmete kirjutamine CSV-faili

Andmete kirjutamiseks „csv” -faili peate kasutama mooduli „csv” meetodit “kirjanik”. Allpool toodud näide lisab olemasolevatele puuviljadele uue rea.csv ”fail.

import csv
avatud ("puuviljad.csv "," a ") failina:
data_writer = csv.kirjanik (fail)
andmete kirjutaja.kirjutaja ([3,1,6,4])

Esimene lause avab faili režiimis "Lisa", mida tähistatakse argumendiga "a". Järgmisena nimetatakse “kirjaniku” meetodit ja viidet “viljadele.fail csv ”edastatakse talle argumendina. Meetod “writow” kirjutab faili uue rea või lisab selle.

Kui soovite teisendada Pythoni sõnaraamatu failiks csv ja salvestada väljund csv-faili, proovige järgmist koodi:

import csv
avatud ("puuviljad.csv "," w ") failina:
päised = ["Mango", "Banaan", "Õun", "Apelsin"]
data_writer = csv.DictWriter (fail, väljanimed = päised)
andmete kirjutaja.kirjutuspäis ()
andmete kirjutaja.writerow ("Mango": 50, "Banaan": 70, "Apple": 30, "Oranž": 90)
andmekirjutaja.writerow ("Mango": 3, "Banaan": 1, "Apple": 6, "Orange": 4)

Pärast tühja “puuviljade avamist.csv ”faili, kasutades lauset“ avatud ”, määratletakse uus muutuja“ pealkirjad ”, mis sisaldab veerupäiseid. Uus objekt "data_writer" luuakse, kutsudes meetodi "DictWriter" ja edastades selle viite "puuviljadele".csv ”fail ja argument“ fieldnames ”. Järgmisel real kirjutatakse veeru pealkirjad faili, kasutades meetodit “kirjutusrida”. Kaks viimast lauset lisavad eelmises etapis loodud vastavatele päistele uued read.

Järeldus

CSV-failid pakuvad hõlpsat viisi andmete kirjutamiseks tabelina. Pythoni sisseehitatud „csv” moodul võimaldab hõlpsalt „csv” failides saadaolevaid andmeid käsitleda ja sellel täiendavat loogikat rakendada.

Kuidas Linuxis oma mänguseanssi jäädvustada ja voogesitada
Varem peeti mängude mängimist ainult hobiks, kuid aja jooksul kasvas mängutööstus tehnoloogia ja mängijate arvu osas tohutult. Mängupublik on veebimän...
Parimad mängud, mida saab mängida käte jälgimisega
Oculus Quest tutvustas hiljuti suurepärast ideed käsitsi jälgimisest ilma kontrolleriteta. Üha suurema hulga mängude ja tegevustega, mis toetavad kas ...
Kuidas kuvada OSD ülekatet täisekraanil Linuxi rakendustes ja mängudes
Täisekraaniga mängude mängimine või rakenduste kasutamine häireteta täisekraanirežiimis võib teid paneelil või tegumiribal kuvatavast asjakohasest süs...