Í Python geturðu auðveldlega lesið og skrifað csv skrár með því að nota venjulegu csv eininguna.
Segjum til dæmis að þú sért með eftirfarandi csv, sample.csv.
11,12,13,14
21,22,23,24
31,32,33,34
Þetta má lesa sem hér segir.
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']
Það sem þú þarft að gæta að hér er þegar það er bil á eftir kommu. Venjulega ætti ekki að vera óþarfa bil eftir kommu, en stundum sé ég skrár með bilum í þeim.
Í slíkum tilvikum, sjálfgefið, er hvítbil ekki hunsuð og skráin lesin eins og hún er.
11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34
Með öðrum orðum, ef þú lest ofangreinda skrá með kommu á eftir bili, verður úttakið sem hér segir
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']
Ef þú tilgreinir eftirfarandi í csv.reader verður bilunum á eftir kommu sleppt.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']
Í einföldu dæmi eins og því hér að ofan geturðu notað ræma() til að fjarlægja bilið. Vandamálið er þegar það er umkringt tvöföldum gæsalappir eins og eftirfarandi.
"one,one", "two,two", "three,three"
Líta ætti á hlutann sem er umkringdur tvöföldum gæsalappir sem einn stakur, en ef skipinitialspace=False (sjálfgefið) mun það líta út eins og eftirfarandi.
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"']
Þetta er hægt að gera með því að stilla 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']
Sama gildir þegar þú lest csv skrá með read_csv() í pöndum. Ef csv skráin hefur bil á eftir kommu geturðu gert eftirfarandi.read_csv(skipinitialspace=True)