Pythonissa voit helposti lukea ja kirjoittaa csv-tiedostoja käyttämällä tavallista csv-moduulia.
Oletetaan esimerkiksi, että sinulla on seuraava csv-tiedosto, sample.csv.
11,12,13,14
21,22,23,24
31,32,33,34
Tämä voidaan lukea seuraavasti.
import csv
with open('data/src/sample.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']
Sinun on oltava varovainen, kun pilkun jälkeen on välilyönti. Normaalisti pilkun jälkeen ei pitäisi olla tarpeettomia välilyöntejä, mutta joskus näen tiedostoja, joissa on välilyöntejä.
Tällaisissa tapauksissa välilyöntejä ei oletusarvoisesti jätetä huomiotta ja tiedosto luetaan sellaisenaan.
11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34
Toisin sanoen, jos luet yllä olevaa tiedostoa siten, että sen jälkeen tulee pilkku ja välilyönti, tuloste on seuraava
with open('data/src/sample_space.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# ['11', ' 12', ' 13', ' 14']
# ['21', ' 22', ' 23', ' 24']
# ['31', ' 32', ' 33', ' 34']
Jos määrität csv.reader-tiedostossa seuraavaa, pilkun jälkeiset välilyönnit ohitetaan.skipinitialspace=True
with open('data/src/sample_space.csv', 'r') as f:
reader = csv.reader(f, skipinitialspace=True)
for row in reader:
print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']
Yllä olevan kaltaisessa yksinkertaisessa esimerkissä voit käyttää strip()-toimintoa välilyöntien poistamiseen. Ongelma on silloin, kun se on ympäröity kaksinkertaisilla lainausmerkeillä, kuten seuraavassa.
"one,one", "two,two", "three,three"
Kaksoislauseiden ympäröimää osaa on pidettävä yhtenä elementtinä, mutta jos skipinitialspace=False (oletusarvo), se näyttää seuraavalta.
with open('data/src/sample_double_quotation.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# ['one,one', ' "two', 'two"', ' "three', 'three"']
Tämä voidaan tehdä asettamalla skipinitialspace=True.
with open('data/src/sample_double_quotation.csv', 'r') as f:
reader = csv.reader(f, skipinitialspace=True)
for row in reader:
print(row)
# ['one,one', 'two,two', 'three,three']
Sama pätee, kun lukee csv-tiedostoa pandasin read_csv()-ohjelmalla. Jos csv-tiedostossa on pilkun jälkeen välilyönti, voit tehdä seuraavasti.read_csv(skipinitialspace=True)