← Все вопросы

Как читать и записывать CSV-файлы в Python?

Задан 5 месяцев назад921 просмотров4 ответа
14

Есть таблица с данными, надо прочитать её из CSV и потом записать новый CSV. Стоит ли парсить через split(',') или есть нормальный способ?

4 ответа

23
✓ Принятый ответ — помог автору

Только не split(',')! Он развалится на первой же ячейке с запятой внутри кавычек. Используй модуль csv:

import csv

# чтение
with open('data.csv', newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)   # row — список строк

# запись
rows = [['имя', 'возраст'], ['Аня', '20']]
with open('out.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerows(rows)

Обрати внимание на newline='' — без него на Windows между строками появятся пустые строки. Если у тебя есть заголовок и хочется обращаться по имени колонки, бери csv.DictReader / csv.DictWriter.

Карина Никитина про newline='' — реально были пустые строки, теперь понятно почему · 5 месяцев назад
9

Модуль csv, а для таблиц посерьёзнее — pandas (pd.read_csv / df.to_csv).

6

DictReader удобнее обычного reader, когда есть шапка — обращаешься к row['имя'], а не к row[0].

-3

Я просто делаю line.split(',') в цикле, нормально работает.

Сергей Новоселов сломается, как только в данных встретится запятая в кавычках · 5 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект