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)