V jazyku Python môžete jednoducho čítať a zapisovať súbory csv pomocou štandardného modulu csv.
Predpokladajme napríklad, že máte nasledujúci súbor csv, sample.csv.
11,12,13,14
21,22,23,24
31,32,33,34
To možno vyčítať takto.
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']
Pozor si treba dávať na to, aby sa za čiarkou nenachádzala medzera. Za normálnych okolností by za čiarkou nemali byť žiadne zbytočné medzery, ale niekedy vidím súbory s medzerami.
V takýchto prípadoch sa biele znaky štandardne neignorujú a súbor sa číta tak, ako je.
11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34
Inými slovami, ak prečítate vyššie uvedený súbor s čiarkou nasledovanou medzerou, výstup bude nasledovný
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']
Ak v súbore csv.reader zadáte nasledujúce údaje, medzery za čiarkou sa vynechajú.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']
V jednoduchom príklade, ako je uvedený vyššie, môžete na odstránenie bielych znakov použiť funkciu strip(). Problém nastáva, keď je obklopený dvojitými úvodzovkami, ako je to v nasledujúcom prípade.
"one,one", "two,two", "three,three"
Časť obklopená dvojitými úvodzovkami by sa mala považovať za jeden prvok, ale ak je skipinitialspace=False (predvolené nastavenie), bude to vyzerať takto.
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"']
To možno vykonať nastavením 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']
To isté platí aj pri čítaní súboru csv pomocou funkcie read_csv() v programe pandas. Ak má súbor csv za čiarkou medzeru, môžete postupovať takto.read_csv(skipinitialspace=True)