Python

Kuinka käsitellä CSV-tiedostoja Pythonissa

Kuinka käsitellä CSV-tiedostoja Pythonissa
Tämä artikkeli käsittelee opetusohjelman "csv" -tiedostojen käsittelystä Pythonilla. Termi "csv" tarkoittaa "pilkuilla erotettuja arvoja", joissa jokainen rivi tai rivi sisältää tekstipohjaisia ​​arvoja pilkuilla. Joissakin tapauksissa arvojen erottamiseen käytetään myös ”puolipistettä” pilkun sijasta. Tällä ei kuitenkaan ole paljon eroa tiedostomuotosääntöjen suhteen, ja logiikka molempien erottimityyppien käsittelemiseksi pysyy samana.

CSV-tiedostomuotoa käytetään yleisimmin tietokantojen ja laskentataulukoiden ylläpitoon. CSV-tiedoston ensimmäistä riviä käytetään yleisimmin sarakekenttien määrittelemiseen, kun taas muita jäljellä olevia rivejä pidetään riveinä. Tämän rakenteen avulla käyttäjät voivat esittää taulukkotietoja CSV-tiedostoilla. CSV-tiedostoja voidaan muokata missä tahansa tekstieditorissa. Sovellukset, kuten LibreOffice Calc, tarjoavat kuitenkin edistyneitä muokkaustyökaluja, lajittelu- ja suodatintoimintoja.

Tietojen lukeminen CSV-tiedostoista Pythonilla

Pythonin CSV-moduulin avulla voit lukea, kirjoittaa ja käsitellä kaikkia CSV-tiedostoihin tallennettuja tietoja. CSV-tiedoston lukemiseksi sinun on käytettävä Pythonin vakiokirjastoon sisältyvää "lukija" -menetelmää Pythonin "csv" -moduulista.

Oletetaan, että sinulla on CSV-tiedosto, joka sisältää seuraavat tiedot:

Mango, banaani, omena, oranssi
50,70,30,90

Tiedoston ensimmäinen rivi määrittelee kukin sarakeluokka, tässä tapauksessa hedelmien nimet. Toinen rivi tallentaa arvot jokaisen sarakkeen alle (varastossa varastossa). Kaikki nämä arvot on erotettu pilkulla. Jos avaat tämän tiedoston taulukkosovelluksessa, kuten LibreOffice Calc, se näyttäisi tältä:

Nyt lukemaan arvot hedelmistä.csv-tiedosto Pythonin “csv” -moduulin avulla, sinun on käytettävä ”lukija” -menetelmää seuraavassa muodossa:

tuo csv
hedelmiä.csv ") tiedostona:
data_reader = csv.lukija (tiedosto)
riville data_reader:
tulosta (viiva)

Yllä olevan otoksen ensimmäinen rivi tuo "csv" -moduulin. Seuraavaksi ”avoimella” -lauseketta käytetään kiintolevylle tallennetun tiedoston turvalliseen avaamiseen (”hedelmät.csv ”(tässä tapauksessa). Uusi "data_reader" -objekti luodaan kutsumalla "lukija" -menetelmä "csv" -moduulista. Tämä "lukija" -menetelmä pitää tiedostonimen pakollisena argumenttina, joten viittaus "hedelmiin.csv ”välitetään sille. Seuraavaksi suoritetaan “for” -silmukka-käsky, joka tulostaa jokaisen rivin hedelmistä.csv ”-tiedosto. Kun olet suorittanut yllä mainitun koodinäytteen, sinun pitäisi saada seuraava lähtö:

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

Jos haluat määrittää rivinumerot tulostettavaksi, voit käyttää “luetella” -toimintoa, joka antaa numeron jokaiselle iteroitavan kohteelle (alkaen 0, ellei sitä muuteta).

tuo csv
hedelmiä.csv ") tiedostona:
data_reader = csv.lukija (tiedosto)
hakemistolle, rivi luettelossa (data_reader):
tulosta (hakemisto, viiva)

Index-muuttuja pitää kunkin elementin määrän. Kun olet suorittanut yllä mainitun koodinäytteen, sinun pitäisi saada seuraava lähtö:

0 ['Mango', 'Banaani', 'Apple', 'Oranssi']
1 ['50', '70', '30', '90']

Koska "csv" -tiedoston ensimmäinen rivi sisältää tyypillisesti sarakeotsikoita, voit purkaa nämä otsikot käyttämällä "luetella" -toimintoa:

tuo csv
hedelmiä.csv ") tiedostona:
data_reader = csv.lukija (tiedosto)
hakemistolle, rivi luettelossa (data_reader):
jos indeksi == 0:
otsikot = rivi
tulosta (otsikot)

Yllä olevan lauseen ”jos” -lohko tarkistaa, onko indeksi yhtä suuri kuin nolla (hedelmien ensimmäinen rivi.csv ”-tiedosto). Jos kyllä, niin rivimuuttujan arvo määritetään uudelle otsikkomuuttujalle. Kun olet suorittanut yllä olevan koodinäytteen, sinun pitäisi saada seuraava tulos:

['Mango', 'Banaani', 'Apple', 'Oranssi']

Huomaa, että voit käyttää omaa erottimiasi soittaessasi “csv.lukija -menetelmä käyttämällä valinnaista "erotin" -argumenttia seuraavassa muodossa:

tuo csv
hedelmiä.csv ") tiedostona:
data_reader = csv.lukija (tiedosto, erotin = ";")
riville data_reader:
tulosta (viiva)

Koska csv-tiedostossa kukin sarake liittyy rivin arvoihin, kannattaa ehkä luoda Python-sanakirja-objekti, kun luet tietoja csv-tiedostosta. Tätä varten sinun on käytettävä "DictReader" -menetelmää alla olevan koodin mukaisesti:

tuo csv
hedelmiä.csv ") tiedostona:
data_reader = csv.DictReader (tiedosto)
riville data_reader:
tulosta (viiva)

Kun olet suorittanut yllä mainitun koodinäytteen, sinun pitäisi saada seuraava lähtö:

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

Joten nyt sinulla on sanakirjaobjekti, joka yhdistää yksittäiset sarakkeet vastaaviin arvoihin riveillä. Tämä toimii hyvin, jos sinulla on vain yksi rivi. Oletetaan, että ”hedelmät.csv ”-tiedosto sisältää nyt ylimääräisen rivin, joka määrittää, kuinka monta päivää hedelmävaraston katoaminen kestää.

Mango, banaani, omena, oranssi
50,70,30,90
3,1,6,4

Kun sinulla on useita rivejä, saman koodinäytteen suorittaminen yllä tuottaa eri tuloksen.

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

Tämä ei ehkä ole ihanteellinen, koska haluat ehkä kartoittaa kaikki yhden sarakkeen arvot yhteen avain-arvo-pariin Python-sanakirjassa. Kokeile tätä koodinäytettä sen sijaan:

tuo csv
hedelmiä.csv ") tiedostona:
data_reader = csv.DictReader (tiedosto)
data_dict =
riville data_reader:
avain, arvo rivillä.kohteet ():
data_dict.setdefault (avain, [])
data_dict [avain].liitä (arvo)
tulosta (data_dict)

Kun olet suorittanut yllä mainitun koodinäytteen, sinun pitäisi saada seuraava lähtö:

'Mango': ['50', '3'], 'Banaani': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90 ',' 4 ']

”For” -silmukkaa käytetään objektin ”DictReader” jokaisessa elementissä silmukkaamaan avainarvopareja. Uusi Python-sanakirjamuuttuja ”data_dict” on määritelty ennen sitä. Se tallentaa lopulliset tietokartoitukset. Toisen "for" -silmukan lohkossa käytetään Python-sanakirjan "setdefault" -menetelmää. Tämä menetelmä määrittää arvon sanakirjaavaimelle. Jos avain-arvo-paria ei ole olemassa, määritetyistä argumenteista luodaan uusi. Joten tässä tapauksessa avaimelle määritetään uusi tyhjä luettelo, jos sitä ei vielä ole olemassa. Viimeiseksi "arvo" liitetään vastaavaan avaimeen lopullisessa "data_dict" -objektissa.

Tietojen kirjoittaminen CSV-tiedostoon

Jos haluat kirjoittaa tietoja csv-tiedostoon, sinun on käytettävä "íraaja" -menetelmää "csv" -moduulista. Alla oleva esimerkki lisää uuden rivin olemassa oleviin hedelmiin.csv ”-tiedosto.

tuo csv
hedelmiä.csv "," a ") tiedostona:
data_writer = csv.kirjailija (tiedosto)
data_writer.kirjailija ([3,1,6,4])

Ensimmäinen lause avaa tiedoston "liitä" -tilassa, jota merkitään argumentilla "a". Seuraavaksi kutsutaan "kirjailija" -menetelmää ja viittaus "hedelmiin".csv ”-tiedosto välitetään sille argumenttina. ”Writerow” -menetelmä kirjoittaa tai lisää uuden rivin tiedostoon.

Jos haluat muuntaa Python-sanakirjan ”csv” -tiedostorakenteeksi ja tallentaa lähdön ”csv” -tiedostoksi, kokeile tätä koodia:

tuo csv
hedelmiä.csv "," w ") tiedostona:
otsikot = ["mango", "banaani", "omena", "oranssi"]
data_writer = csv.DictWriter (tiedosto, kentänimet = otsikot)
data_writer.kirjoitusotsikko ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Oranssi": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Oranssi": 4)

Avaamisen jälkeen tyhjä “hedelmät.csv ”-tiedosto käyttäen” with open ”-käskyä määritetään uusi muuttuja“ headings ”, joka sisältää sarakeotsikot. Uusi objekti "data_writer" luodaan kutsumalla "DictWriter" -menetelmä ja välittämällä sen viittaus "hedelmiin".csv ”-tiedosto ja“ fieldnames ”-argumentti. Seuraavalla rivillä sarakkeiden otsikot kirjoitetaan tiedostoon "writeheader" -menetelmällä. Kaksi viimeistä lausetta lisäävät uusia rivejä edellisessä vaiheessa luotuihin vastaaviin otsikoihin.

Johtopäätös

CSV-tiedostot tarjoavat siistin tavan kirjoittaa tietoja taulukkomuodossa. Pythonin sisäänrakennetun “csv” -moduulin avulla on helppo käsitellä ”csv” -tiedostoissa olevia tietoja ja toteuttaa niihin lisälogiikkaa.

Parhaat pelikonsoliemulaattorit Linuxille
Tässä artikkelissa luetellaan suositut pelikonsolin emulointiohjelmistot, jotka ovat saatavana Linuxille. Emulointi on ohjelmistojen yhteensopivuusker...
Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...
Kuinka siepata ja suoratoistaa pelisessiosi Linuxissa
Aikaisemmin pelaamista pidettiin vain harrastuksena, mutta ajan myötä pelialalla tapahtui valtava kasvu tekniikan ja pelaajien määrän suhteen. Peliala...