Python дээр та стандарт csv модулийг ашиглан csv файлуудыг хялбархан уншиж, бичиж болно.
Жишээлбэл, танд дараах csv, sample.csv байна гэж бодъё.
11,12,13,14
21,22,23,24
31,32,33,34
Үүнийг дараах байдлаар уншиж болно.
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']
Энд анхаарах ёстой зүйл бол таслалын дараа хоосон зай байх явдал юм. Ер нь таслалын дараа шаардлагагүй хоосон зай байх ёсгүй, гэхдээ би заримдаа дотор нь хоосон зайтай файлуудыг хардаг.
Ийм тохиолдолд анхдагчаар хоосон зайг үл тоомсорлож, файлыг байгаагаар нь уншина.
11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34
Өөрөөр хэлбэл дээрх файлыг таслал, хоосон зайтай уншвал дараах байдлаар гарна.
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']
Хэрэв та csv.reader-д дараах зүйлийг зааж өгвөл таслалаас хойшхи зай алгасах болно.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']
Дээрх шиг энгийн жишээн дээр та хоосон зайг арилгахын тулд strip() ашиглаж болно. Асуудал нь дараах шиг давхар хашилтаар хүрээлэгдсэн байх явдал юм.
"one,one", "two,two", "three,three"
Давхар хашилтаар хүрээлэгдсэн хэсгийг нэг элемент гэж үзэх боловч skipinitialspace=False (өгөгдмөл) бол дараах байдалтай харагдана.
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"']
Үүнийг 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']
Pandas-д read_csv()-тай csv файлыг уншихад ч мөн адил. Хэрэв csv файлд таслалын дараа хоосон зай байгаа бол та дараах зүйлийг хийж болно.read_csv(skipinitialspace=True)