← Все вопросы
Как читать и записывать CSV-файлы в Python?
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 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.