Kini kujdes kur lexoni një csv me presje të ndjekur nga një hapësirë ​​në Python

biznes

Në Python, lehtë mund të lexoni dhe shkruani skedarë csv duke përdorur modulin standard csv.

Për shembull, supozoni se keni csv-në e mëposhtme, sample.csv.

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

Kjo mund të lexohet si më poshtë.

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

Ajo që duhet të keni kujdes këtu është kur ka një hapësirë ​​​​pas presjes. Normalisht, nuk duhet të ketë hapësira të panevojshme pas presjes, por ndonjëherë shoh skedarë me hapësira në to.

Në raste të tilla, si parazgjedhje, hapësira e bardhë nuk injorohet dhe skedari lexohet siç është.

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

Me fjalë të tjera, nëse lexoni skedarin e mësipërm me një presje të ndjekur nga një hapësirë, dalja do të jetë si më poshtë

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

Nëse specifikoni sa vijon në csv.reader, hapësirat pas presjes do të anashkalohen.
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']

Në një shembull të thjeshtë si ai i mësipërm, mund të përdorni strip() për të hequr hapësirën e bardhë. Problemi është kur është i rrethuar me thonjëza të dyfishta si më poshtë.

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

Pjesa e rrethuar me thonjëza të dyfishta duhet të konsiderohet si një element i vetëm, por nëse skipinitialspace=False (parazgjedhja), do të duket si më poshtë.

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

Kjo mund të bëhet duke vendosur skipinitialspace=E vërtetë.

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

E njëjta gjë është e vërtetë kur lexoni një skedar csv me read_csv() në panda. Nëse skedari csv ka një hapësirë ​​​​pas presjes, mund të bëni sa më poshtë.
read_csv(skipinitialspace=True)

Copied title and URL