CSV failo formatas dažniausiai naudojamas duomenų bazėms ir skaičiuoklėms palaikyti. Pirmoji CSV failo eilutė dažniausiai naudojama stulpelių laukams apibrėžti, o visos likusios eilutės laikomos eilėmis. Ši struktūra leidžia vartotojams pateikti lentelių duomenis naudojant CSV failus. CSV failus galima redaguoti bet kuriame teksto rengyklėje. Tačiau tokios programos kaip „LibreOffice Calc“ teikia pažangius redagavimo įrankius, rūšiavimo ir filtravimo funkcijas.
Duomenų skaitymas iš CSV failų naudojant „Python“
„Python“ CSV modulis leidžia jums skaityti, rašyti ir tvarkyti visus duomenis, saugomus CSV failuose. Norėdami skaityti CSV failą, turėsite naudoti „Reader“ metodą iš „Python“ „csv“ modulio, kuris yra įtrauktas į „Python“ standartinę biblioteką.
Mano, kad turite CSV failą, kuriame yra šie duomenys:
Mango, bananas, obuolys, apelsinas50,70,30,90
Pirmoje failo eilutėje apibrėžta kiekviena stulpelio kategorija, šiuo atveju vaisių pavadinimas. Antroje eilutėje vertės kaupiamos kiekviename stulpelyje (atsargos). Visos šios reikšmės yra atskirtos kableliu. Jei atidarytumėte šį failą skaičiuoklės programoje, pvz., „LibreOffice Calc“, tai atrodytų taip:
Dabar skaityti vertybes iš „vaisių.csv “failą naudojant„ Python “„ csv “modulį, jums reikės naudoti„ reader “metodą tokiu formatu:
importuoti csvsu atvirais vaisiais.csv ") kaip failas:
data_reader = csv.skaitytuvas (byla)
eilutei „data_reader“:
spausdinti (linija)
Pirmoji eilutė aukščiau pateiktame pavyzdyje importuoja „csv“ modulį. Toliau sakinys „su atviru“ naudojamas saugiai atidaryti failą, saugomą standžiajame diske („vaisiai.csv “(šiuo atveju). Naujas „data_reader“ objektas sukuriamas iškvietus „reader“ metodą iš „csv“ modulio. Šis „skaitytojo“ metodas yra failo pavadinimas kaip privalomas argumentas, todėl nuoroda į „vaisius.csv “perduodama jai. Tada paleidžiamas ciklo sakinys „už“, kad būtų išspausdintos kiekvienos „vaisių“ eilutės.csv “failas. Paleidus pirmiau minėtą kodo pavyzdį, turėtumėte gauti šį išvestį:
['50', '70', '30', '90']Jei norite priskirti išvesties eilučių numerius, galite naudoti funkciją „surašyti“, kuri kiekvienam iteruojamo elemento numeriui priskiria numerį (pradedant nuo 0, nebent pakeista).
importuoti csvsu atvirais vaisiais.csv ") kaip failas:
data_reader = csv.skaitytuvas (byla)
indeksui, eilutei surašyti (data_reader):
spausdinti (rodyklė, eilutė)
Kintamasis „index“ išlaiko kiekvieno elemento skaičių. Paleidus pirmiau minėtą kodo pavyzdį, turėtumėte gauti šį išvestį:
0 [„Mango“, „Bananas“, „Obuolys“, „Apelsinas“]1 ['50', '70', '30', '90']
Kadangi „csv“ failo pirmoje eilutėje paprastai yra stulpelių antraštės, galite naudoti funkciją „surašyti“, kad išgautumėte šias antraštes:
importuoti csvsu atvirais vaisiais.csv ") kaip failas:
data_reader = csv.skaitytuvas (byla)
indeksui, eilutei surašyti (data_reader):
jei indeksas == 0:
antraštės = eilutė
spausdinti (antraštės)
Aukščiau esančiame sakinyje esantis blokas „jei“ tikrina, ar indeksas yra lygus nuliui (pirmoji „vaisių.csv “failas). Jei taip, tada „line“ kintamojo vertė priskiriama naujam „headings“ kintamajam. Paleidus aukščiau pateiktą kodo pavyzdį, turėtumėte gauti šį išvestį:
[„Mango“, „Bananas“, „Obuolys“, „Apelsinas“]Atkreipkite dėmesį, kad skambindami „csv.skaitytojo “metodas naudojant pasirinktinį argumentą„ atribiklis “tokiu formatu:
importuoti csvsu atvirais vaisiais.csv ") kaip failas:
data_reader = csv.skaitytuvas (failas, atribotojas = ";")
eilutei „data_reader“:
spausdinti (linija)
Kadangi csv faile kiekvienas stulpelis yra susietas su reikšmėmis iš eilės, galbūt norėsite sukurti „Python“ žodyno objektą, kai skaitote duomenis iš „csv“ failo. Norėdami tai padaryti, turite naudoti „DictReader“ metodą, kaip parodyta žemiau esančiame kode:
importuoti csvsu atvirais vaisiais.csv ") kaip failas:
data_reader = csv.„DictReader“ (failas)
eilutei „data_reader“:
spausdinti (linija)
Paleidus pirmiau minėtą kodo pavyzdį, turėtumėte gauti šį išvestį:
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'Taigi dabar turite žodyno objektą, kuris susieja atskirus stulpelius su atitinkamomis jų eilutėse esančiomis reikšmėmis. Tai gerai, jei turite tik vieną eilutę. Tarkime, kad „vaisiai.faile csv “dabar yra papildoma eilutė, kurioje nurodoma, kiek dienų reikės, kad vaisių atsargos sunyktų.
Mango, bananas, obuolys, apelsinas50,70,30,90
3,1,6,4
Kai turite kelias eilutes, paleisdami tą patį aukščiau nurodytą kodo pavyzdį gausite skirtingą išvestį.
'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90''Mango': '3', 'Banana': '1', 'Apple': '6', 'Orange': '4'
Tai gali būti ne idealu, nes galbūt norėsite susieti visas reikšmes, susijusias su vienu stulpeliu, su viena raktų ir verčių pora „Python“ žodyne. Išbandykite šį kodo pavyzdį:
importuoti csvsu atvirais vaisiais.csv ") kaip failas:
data_reader = csv.„DictReader“ (failas)
data_dict =
eilutei „data_reader“:
raktas, vertė eilutėje.elementai ():
data_dict.setdefault (raktas, [])
data_dict [raktas].pridėti (vertė)
spausdinti (data_dict)
Paleidus pirmiau minėtą kodo pavyzdį, turėtumėte gauti šį išvestį:
'Mango': ['50', '3'], 'Bananas': ['70', '1'], 'Obuolys': ['30', '6'], 'Oranžinė': ['90 ',' 4 ']Kiekvienam objekto „DictReader“ elementui naudojama kilpa „už“, kad būtų galima pereiti prie raktų ir verčių porų. Prieš tai apibrėžtas naujas „Python“ žodyno kintamasis „data_dict“. Jame bus saugomi galutiniai duomenų susiejimai. Antrame ciklo bloke „for“ naudojamas „Python“ žodyno metodas „setdefault“. Šis metodas priskiria žodyno raktui vertę. Jei rakto ir vertės poros nėra, iš nurodytų argumentų sukuriama nauja. Taigi šiuo atveju raktui bus priskirtas naujas tuščias sąrašas, jei jo dar nėra. Galiausiai „value“ pridedama prie atitinkamo rakto galutiniame objekte „data_dict“.
Duomenų rašymas į CSV failą
Norėdami įrašyti duomenis į „csv“ failą, turėsite naudoti „rašytojo“ metodą iš „csv“ modulio. Toliau pateiktame pavyzdyje bus pridėta nauja eilutė prie esamų „vaisių.csv “failas.
importuoti csvsu atvirais vaisiais.csv "," a ") kaip failas:
data_writer = csv.rašytojas (byla)
duomenų rašytojas.rašytojas ([3,1,6,4])
Pirmasis sakinys atidaro failą režimu „pridėti“, žymimą argumentu „a“. Toliau vadinamas „rašytojo“ metodas ir nuoroda į „vaisius.csv “failas jam perduodamas kaip argumentas. Metodas „writerow“ rašo arba prideda naują failo eilutę.
Jei norite konvertuoti „Python“ žodyną į „csv“ failo struktūrą ir išsaugoti išvestį „csv“ faile, išbandykite šį kodą:
importuoti csvsu atvirais vaisiais.csv "," w ") kaip failas:
antraštės = ["Mango", "Bananas", "Obuolys", "Apelsinas"]
data_writer = csv.„DictWriter“ (failas, lauko pavadinimai = antraštės)
duomenų rašytojas.rašymo antraštė ()
duomenų rašytojas.rašytojas („Mango“: 50, „Bananas“: 70, „Obuolys“: 30, „Apelsinas“: 90)
duomenų rašytojas.rašytojas ("Mango": 3, "Bananas": 1, "Obuolys": 6, "Apelsinas": 4)
Atidariusi tuščią „vaisių.csv “failą naudojant„ su atviru “sakiniu, apibrėžiamas naujas kintamasis„ antraštės “, kuriame yra stulpelių antraštės. Naujas objektas „data_writer“ sukuriamas iškvietus „DictWriter“ metodą ir perduodant jam nuorodą į „vaisius“.csv “failą ir argumentą„ fieldnames “. Kitoje eilutėje stulpelių antraštės įrašomos į failą naudojant „writeheader“ metodą. Paskutiniai du teiginiai įtraukia naujas eilutes į atitinkamas antraštes, sukurtas ankstesniame žingsnyje.
Išvada
CSV failai suteikia tvarkingą būdą rašyti duomenis lentelių formatu. „Python“ įmontuotas „csv“ modulis leidžia lengvai tvarkyti „csv“ failuose esančius duomenis ir įdiegti tolesnę logiką.