Python-da vergüldən sonra boşluq qoyulmuş csv-i oxuyarkən diqqətli olun

Biznes

Python-da standart csv modulundan istifadə edərək csv fayllarını asanlıqla oxuya və yaza bilərsiniz.

Məsələn, fərz edək ki, sizdə aşağıdakı csv var, sample.csv.

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

Bunu aşağıdakı kimi oxumaq olar.

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

Burada diqqətli olmağınız lazım olan şey vergüldən sonra boşluq olmasıdır. Normalda vergüldən sonra lazımsız boşluqlar olmamalıdır, amma bəzən içərisində boşluq olan fayllar görürəm.

Belə hallarda, standart olaraq, boşluq nəzərə alınmır və fayl olduğu kimi oxunur.

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

Başqa sözlə, yuxarıdakı faylı vergüldən sonra boşluqla oxusanız, nəticə aşağıdakı kimi olacaq.

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

Əgər csv.reader-də aşağıdakıları qeyd etsəniz, vergüldən sonrakı boşluqlar atılacaq.
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']

Yuxarıdakı kimi sadə bir nümunədə, boşluqları silmək üçün strip() istifadə edə bilərsiniz. Problem aşağıdakı kimi qoşa dırnaq işarələri ilə əhatə olunduqdadır.

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

Qoşa dırnaq işarələri ilə əhatə olunmuş hissə tək element kimi qəbul edilməlidir, lakin skipinitialspace=False (standart) olarsa, o, aşağıdakı kimi görünəcək.

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

Bunu skipinitialspace=True təyin etməklə etmək olar.

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

Eyni şey, pandalarda read_csv() ilə csv faylını oxuyarkən də doğrudur. Csv faylında vergüldən sonra boşluq varsa, aşağıdakıları edə bilərsiniz.
read_csv(skipinitialspace=True)

Copied title and URL