У 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']
Тое ж самае адбываецца пры чытанні файла csv з read_csv() у pandas. Калі файл csv мае прабел пасля коскі, вы можаце зрабіць наступнае.read_csv(skipinitialspace=True)