Olge ettevaatlik, kui loete csv-d, kus Pythonis on koma ja sellele järgneb tühik.

Äri

Pythonis saab csv-faile hõlpsasti lugeda ja kirjutada, kasutades standardset csv-moodulit.

Näiteks oletame, et teil on järgmine csv, sample.csv.

11,12,13,14
21,22,23,24
31,32,33,34

Seda võib lugeda järgmiselt.

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']

Siin tuleb olla ettevaatlik, kui koma järel on tühik. Tavaliselt ei tohiks koma järel olla mittevajalikke tühikuid, kuid mõnikord näen ma faile, kus on tühikuid.

Sellisel juhul ei jäeta vaikimisi tühikuid tähelepanuta ja faili loetakse sellisena, nagu see on.

11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34

Teisisõnu, kui lugeda ülaltoodud faili komaga, millele järgneb tühik, on väljund järgmine

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']

Kui te täpsustate csv.reader'is järgmist, jäetakse koma järel olevad tühikud vahele.
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']

Ülaltoodud lihtsa näite puhul võite kasutada strip() funktsiooni tühikute eemaldamiseks. Probleem on siis, kui see on ümbritsetud kahekordsete jutumärkidega, nagu järgnevalt.

"one,one", "two,two", "three,three"

Kahekordsete jutumärkidega ümbritsetud osa tuleks käsitleda ühe elemendina, kuid kui skipinitialspace=False (vaikimisi), näeb see välja järgmiselt.

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"']

Seda saab teha seadistades 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 kehtib ka csv-faili lugemisel pandase funktsiooniga read_csv(). Kui csv-failis on koma järel tühik, saate teha järgmist.
read_csv(skipinitialspace=True)

Copied title and URL