Как читать и писать CSV файлы в Python: подробное руководство
Что такое CSV файл?
CSV (Comma-Separated Values) — файл, хранящий табличные данные в виде простого текста. Каждая строка представляет строку таблицы, а отдельные поля разделены запятой, точкой с запятой или другим разделителем. CSV файлы лёгкие, широко поддерживаются таблицами, базами данных и инструментами анализа данных, что делает их предпочтительным форматом для обмена данными.
Пример CSV файла
Ниже типичное CSV представление небольшой базы данных языков программирования. Первая строка содержит заголовки столбцов, за ними следуют строки данных.
Табличные данные
| Язык программирования | Разработчик | Год появления | Расширение |
|---|---|---|---|
| Python | Guido van Rossum | 1991 | .py |
| Java | James Gosling | 1995 | .java |
| C++ | Bjarne Stroustrup | 1983 | .cpp |
CSV данные
Programming language,Designed by,Appeared,Extension Python,Guido van Rossum,1991,.py Java,James Gosling,1995,.java C++,Bjarne Stroustrup,1983,.cpp
Встроенный модуль csv в Python
Модуль csv предоставляет низкоуровневые инструменты для чтения и записи CSV файлов. Он автоматически обрабатывает кавычки, разделители и завершители строк, снижая потребность в ручной манипуляции строками.
Ключевые функции
csv.reader()— итерация по строкам как спискам.csv.DictReader()— преобразование строк в словари с ключами из заголовков столбцов.csv.writer()— запись строк в CSV файл.csv.DictWriter()— запись словарей в CSV файл.- Помощники диалектов:
csv.get_dialect(),csv.list_dialects(),csv.register_dialect(),csv.unregister_dialect().
Чтение CSV файла
Минимальный, готовый к продакшену пример, читающий CSV файл и печатающий каждую строку как Python список.
import csv
with open('data.csv', mode='r', newline='', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
Вывод:
["Programming language", "Designed by", "Appeared", "Extension"] ["Python", "Guido van Rossum", "1991", ".py"] ["Java", "James Gosling", "1995", ".java"] ["C++", "Bjarne Stroustrup", "1983", ".cpp"]
Чтение CSV в словарь
Использование csv.DictReader автоматически отображает строку заголовков в ключи словаря, упрощая работу с данными.
import csv
with open('data.csv', mode='r', newline='', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
Результирующие словари:
{"Programming language": "Python", "Designed by": "Guido van Rossum", "Appeared": "1991", "Extension": ".py"}
{"Programming language": "Java", "Designed by": "James Gosling", "Appeared": "1995", "Extension": ".java"}
{"Programming language": "C++", "Designed by": "Bjarne Stroustrup", "Appeared": "1983", "Extension": ".cpp"}
Запись CSV файла
Классы csv.writer и csv.DictWriter позволяют эффективно записывать данные.
import csv
rows = [
["Programming language", "Designed by", "Appeared", "Extension"],
["Python", "Guido van Rossum", "1991", ".py"],
["Java", "James Gosling", "1995", ".java"],
["C++", "Bjarne Stroustrup", "1983", ".cpp"],
]
with open('writeData.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
writer.writerows(rows)
Сгенерированный writeData.csv будет соответствовать исходному образцу.
Использование Pandas для операций с CSV
Pandas упрощает работу с CSV, загружая данные в DataFrame, обеспечивая мощные манипуляции данными с минимальным кодом. Установите с pip install pandas, если ещё не доступен.
Чтение с Pandas
import pandas as pd
df = pd.read_csv('data.csv')
print(df)
Вывод:
Programming language Designed by Appeared Extension 0 Python Guido van Rossum 1991 .py 1 Java James Gosling 1995 .java 2 C++ Bjarne Stroustrup 1983 .cpp
Запись с Pandas
import pandas as pd
data = {
'Programming language': ['Python', 'Java', 'C++'],
'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],
'Appeared': ['1991', '1995', '1983'],
'Extension': ['.py', '.java', '.cpp'],
}
df = pd.DataFrame(data)
df.to_csv('pandaresult.csv', index=False)
print(df)
Результирующий CSV идентичен оригиналу, но DataFrame предлагает расширенные аналитические возможности.
Заключение
Модуль csv в Python и Pandas предоставляют надёжные, простые в использовании инструменты для чтения, записи и манипуляции CSV файлами. Освоение этих библиотек открывает эффективные рабочие процессы с данными в веб-сервисах, ETL-конвейерах и научных исследованиях. Начните экспериментировать сегодня и интегрируйте обработку CSV в свои проекты с уверенностью.
Python
- Ключевые слова и идентификаторы в Python: мастерство зарезервированных слов и соглашений об именовании
- Операторы, отступы и комментарии в Python: понятное руководство
- Переменные, константы и литералы в Python — подробное руководство
- Мастерство преобразования типов в Python: Полное руководство
- Мастерство ввода-вывода и импорта модулей в Python: Практическое руководство
- Глобальные, локальные и nonlocal переменные в Python: понимание и применение
- Работа с файлами в Python: открытие, чтение, запись и управление
- Управление директориями и файлами в Python: полное руководство
- Ошибки и встроенные исключения в Python: полное руководство
- Получение текущей даты и времени в Python: практическое руководство