0Pricing
Python Academy · Урок

Чтение CSV с помощью csv.reader

Читайте CSV-файлы построчно и обращайтесь к столбцам по индексу.

«Чтение CSV с помощью csv.reader» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Введение

Встроенный модуль csv в Python обрабатывает особенности CSV-файлов: поля в кавычках, разделители и разные окончания строк.

Открытие CSV-файла

with open('data.csv', newline='') as f: — рекомендуемый способ: newline='' позволяет модулю csv обрабатывать окончания строк.
import csv, io
sample = 'name,age,city\nAlice,30,NYC\nBob,25,LA'
reader = csv.reader(io.StringIO(sample))
for row in reader:
    print(row)

Основы csv.reader

csv.reader(f) возвращает итератор строк, где каждая строка представляет собой список строковых значений.
import csv, io
data = 'a,b,c\n1,2,3\n4,5,6'
for row in csv.reader(io.StringIO(data)):
    print(row)

Пропуск заголовка

next(reader) пропускает строку заголовка. Или используйте csv.DictReader, чтобы обращаться к столбцам по именам.
import csv, io
data = 'name,age\nAlice,30\nBob,25'
reader = csv.reader(io.StringIO(data))
header = next(reader)  # skip
for row in reader:
    print(row)

Пользовательский разделитель

csv.reader(f, delimiter=';') читает файлы, разделённые точками с запятой. Поддерживается любой однорядный разделитель.
import csv, io
data = 'a;b;c\n1;2;3'
for row in csv.reader(io.StringIO(data), delimiter=';'):
    print(row)

Обработка полей в кавычках

csv.reader автоматически обрабатывает поля в кавычках: 'Alice, Jr.' остаётся одним полем.
import csv, io
data = 'name,note\n"Smith, John","great guy"'
for row in csv.reader(io.StringIO(data)):
    print(row)

csv.DictReader

DictReader преобразует каждую строку в OrderedDict (или обычный dict в версии 3.8 и новее), используя строку заголовка как ключи.
import csv, io
data = 'name,age\nAlice,30\nBob,25'
for row in csv.DictReader(io.StringIO(data)):
    print(row['name'], row['age'])

Преобразование типов

Значения CSV всегда являются строками. Преобразуйте их явно: int(row['age']), float(row['price']).
import csv, io
data = 'item,price\napple,1.5\nbanana,0.75'
for row in csv.DictReader(io.StringIO(data)):
    print(row['item'], float(row['price'])*2)

Обработка кодировки

open(file, encoding='utf-8-sig') обрабатывает BOM UTF-8, часто встречающийся в CSV-файлах, созданных Excel.
# with open('data.csv', encoding='utf-8-sig', newline='') as f:
#     reader = csv.DictReader(f)
print('encoding demo')

Большие CSV-файлы

csv.reader работает лениво — он читает по одной строке за раз. Загружать весь файл в память не нужно.
import csv, io
data = '\n'.join(f'{i},{i*2}' for i in range(1000))
reader = csv.reader(io.StringIO(data))
print(sum(int(row[0]) for row in reader))

Определение диалекта

csv.Sniffer().sniff(sample) автоматически определяет разделитель и стиль заключения в кавычки.
import csv, io
data = 'a|b|c\n1|2|3'
sniff = csv.Sniffer().sniff(data[:100])
print('delimiter:', sniff.delimiter)
for row in csv.reader(io.StringIO(data), dialect=sniff):
    print(row)

Быстрая проверка

Какой параметр следует всегда задавать при открытии CSV-файла с помощью open()?

Повторение

csv.reader: строки как списки строковых значений. DictReader: строки как словари. Всегда открывайте файл с newline=''. Учитывайте кодировку файлов Excel. Явно преобразуйте типы.

Продолжайте

Так держать! Переходите к следующему уроку.

Часто задаваемые вопросы

Урок «Чтение CSV с помощью csv.reader» бесплатный?

Да — полный текст урока «Чтение CSV с помощью csv.reader» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Чтение CSV с помощью csv.reader»?

Читайте CSV-файлы построчно и обращайтесь к столбцам по индексу. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Чтение CSV с помощью csv.reader»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Кодирование и декодирование JSON
  2. Работа с вложенными структурами JSON
  3. Чтение CSV с помощью csv.reader
  4. Запись CSV с помощью csv.DictWriter
← Назад к Python Academy