Katika Python, unaweza kusoma na kuandika faili za csv kwa urahisi kwa kutumia moduli ya kawaida ya csv.
Kwa mfano, tuseme una csv ifuatayo, sample.csv.
11,12,13,14
21,22,23,24
31,32,33,34
Hii inaweza kusomwa kama ifuatavyo.
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']
Unachohitaji kuwa mwangalifu hapa ni wakati kuna nafasi baada ya koma. Kwa kawaida, haipaswi kuwa na nafasi zisizohitajika baada ya koma, lakini wakati mwingine mimi huona faili zilizo na nafasi ndani yao.
Katika hali kama hizi, kwa chaguo-msingi, nafasi nyeupe haijapuuzwa na faili inasomwa kama ilivyo.
11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34
Kwa maneno mengine, ukisoma faili iliyo hapo juu na koma ikifuatiwa na nafasi, matokeo yatakuwa kama ifuatavyo
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']
Ukibainisha yafuatayo katika csv.reader, nafasi baada ya koma zitarukwa.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']
Katika mfano rahisi kama ule ulio hapo juu, unaweza kutumia strip() kuondoa nafasi nyeupe. Shida ni wakati imezungukwa na alama mbili za nukuu kama zifuatazo.
"one,one", "two,two", "three,three"
Sehemu iliyozungukwa na alama mbili za nukuu inapaswa kuzingatiwa kama kipengele kimoja, lakini ikiwa skipinitialspace=False (chaguo-msingi), itaonekana kama ifuatayo.
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"']
Hii inaweza kufanywa kwa kuweka 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']
Vile vile ni kweli wakati wa kusoma faili ya csv na read_csv() kwenye pandas. Ikiwa faili ya csv ina nafasi baada ya koma, unaweza kufanya yafuatayo.read_csv(skipinitialspace=True)