Python Academy · Oppitunti

CSV-tiedostojen lukeminen csv.readerillä

Lukekaa CSV-tiedostoja rivi kerrallaan ja käyttäkää sarakkeita indeksin avulla.

Oppitunti 3/414 vaihetta

CSV-tiedostojen lukeminen csv.readerillä on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Johdanto

Pythonin csv-moduuli käsittelee CSV-tiedostojen monimutkaisuudet, kuten lainausmerkeissä olevat kentät, erotinmerkit ja erilaiset rivinvaihdot.

CSV-tiedoston avaaminen

with open('data.csv', newline='') as f: on suositeltu tapa — newline='' antaa csv-moduulin käsitellä rivinvaihdot.
import csv, io
sample = 'name,age,city\nAlice,30,NYC\nBob,25,LA'
reader = csv.reader(io.StringIO(sample))
for row in reader:
    print(row)

csv.readerin perusteet

csv.reader(f) palauttaa rivejä tuottavan iteraattorin, jossa kukin rivi on merkkijonojen lista.
import csv, io
data = 'a,b,c\n1,2,3\n4,5,6'
for row in csv.reader(io.StringIO(data)):
    print(row)

Otsikkorivin ohittaminen

next(reader) ohittaa otsikkorivin. Vaihtoehtoisesti voitte käyttää csv.DictReaderia sarakkeiden käyttämiseen nimen perusteella.
import csv, io
data = 'name,age\nAlice,30\nBob,25'
reader = csv.reader(io.StringIO(data))
header = next(reader)  # skip
for row in reader:
    print(row)

Mukautettu erotinmerkki

csv.reader(f, delimiter=';') lukee puolipisteellä eroteltuja tiedostoja. Se toimii millä tahansa yhden merkin erotinmerkillä.
import csv, io
data = 'a;b;c\n1;2;3'
for row in csv.reader(io.StringIO(data), delimiter=';'):
    print(row)

Lainausmerkeissä olevien kenttien käsittely

csv.reader käsittelee lainausmerkeissä olevat kentät automaattisesti: 'Alice, Jr.' säilyy yhtenä kenttänä.
import csv, io
data = 'name,note\n"Smith, John","great guy"'
for row in csv.reader(io.StringIO(data)):
    print(row)

csv.DictReader

DictReader muuntaa kunkin rivin OrderedDict-olioksi (tai tavalliseksi dict-olioksi versiossa 3.8 ja uudemmissa) ja käyttää otsikkoriviä avaimina.
import csv, io
data = 'name,age\nAlice,30\nBob,25'
for row in csv.DictReader(io.StringIO(data)):
    print(row['name'], row['age'])

Tyyppimuunnokset

CSV-arvot ovat aina merkkijonoja. Muuntakaa ne erikseen: int(row['age']), float(row['price']).
import csv, io
data = 'item,price\napple,1.5\nbanana,0.75'
for row in csv.DictReader(io.StringIO(data)):
    print(row['item'], float(row['price'])*2)

Merkistön käsittely

open(file, encoding='utf-8-sig') käsittelee UTF-8 BOM -tunnisteen, joka on yleinen Excelillä luoduissa CSV-tiedostoissa.
# with open('data.csv', encoding='utf-8-sig', newline='') as f:
#     reader = csv.DictReader(f)
print('encoding demo')

Suuret CSV-tiedostot

csv.reader on laiska — se lukee yhden rivin kerrallaan. Koko tiedostoa ei tarvitse ladata muistiin.
import csv, io
data = '\n'.join(f'{i},{i*2}' for i in range(1000))
reader = csv.reader(io.StringIO(data))
print(sum(int(row[0]) for row in reader))

Murteen tunnistaminen

csv.Sniffer().sniff(sample) tunnistaa erotinmerkin ja lainausmerkkien käytön automaattisesti.
import csv, io
data = 'a|b|c\n1|2|3'
sniff = csv.Sniffer().sniff(data[:100])
print('delimiter:', sniff.delimiter)
for row in csv.reader(io.StringIO(data), dialect=sniff):
    print(row)

Pikatarkistus

Mikä parametri pitäisi aina asettaa, kun CSV-tiedosto avataan open()-funktiolla?

Kertaus

csv.reader: rivit merkkijonolistoina. DictReader: rivit sanakirjoina. Avatkaa tiedosto aina parametrilla newline=''. Käsitelkää Excel-tiedostojen merkistö. Muuntakaa tyypit erikseen.

Jatkakaa

Jatkakaa samaan tapaan! Siirtykää seuraavaan oppituntiin.
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”CSV-tiedostojen lukeminen csv.readerillä” ilmainen?

Kyllä – oppitunnin ”CSV-tiedostojen lukeminen csv.readerillä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”CSV-tiedostojen lukeminen csv.readerillä”?

Lukekaa CSV-tiedostoja rivi kerrallaan ja käyttäkää sarakkeita indeksin avulla. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”CSV-tiedostojen lukeminen csv.readerillä”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. JSON-koodaus ja -dekoodaus
  2. Sisäkkäisten JSON-rakenteiden käsittely
  3. CSV-tiedostojen lukeminen csv.readerillä
  4. CSV-tiedostoihin kirjoittaminen csv.DictWriterillä
← Takaisin: Python Academy