Python CSV: чтение и запись электронных таблиц
Узнайте, как обрабатывать данные CSV в Python. Освойте csv.reader, csv.writer и DictReader/DictWriter для эффективного анализа таблиц.
Обзор
CSV (значения, разделенные запятыми) — это универсальный формат для экспорта и импорта данных из электронных таблиц и реляционных баз данных. Поскольку файлы CSV представляют собой простые текстовые файлы, они повсеместно поддерживаются аналитическими инструментами, платформами баз данных и языками программирования. Python имеет встроенный модуль csv, специально оптимизированный для анализа, записи и манипулирования табличными данными без необходимости использования сторонних библиотек, таких как pandas.
Модуль csv предоставляет два основных интерфейса: чтение/запись на основе списков и чтение/запись на основе словаря. `csv.reader()` и `csv.writer()` представляют каждую строку в CSV как список строк, что просто, но требует ссылки на столбцы по их числовому индексу. Для более надежного подхода разработчики используют `csv.DictReader()` и `csv.DictWriter()`. Эти классы сопоставляют каждую строку со словарем, используя строку заголовка CSV в качестве ключей, создавая легко читаемый код, который не прерывается при переупорядочении столбцов.
При работе с файлами CSV важны детали синтаксиса. В разных программах используются разные разделители (например, табуляция или точки с запятой) и по-разному обрабатываются кавычки или окончания строк. Модуль «csv» позволяет вам определять собственные разделители, правила цитирования и escape-символы с помощью параметра «диалект». Кроме того, при открытии файлов CSV в Python крайне важно передавать `newline=''` в функцию `open()`, чтобы предотвратить проблемы с пустыми строками в разных операционных системах.
Код и вывод выполнения
Запись данных в файл CSV с помощью DictWriter и чтение их обратно с помощью DictReader.
import csv
filename = "employees.csv"
fieldnames = ["id", "name", "department"]
data = [
{"id": "101", "name": "Bob", "department": "HR"},
{"id": "102", "name": "Alice", "department": "Engineering"}
]
# Write dict data to CSV
with open(filename, "w", newline="") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(data)
print("CSV written successfully.\n--- Reading CSV ---")
# Read CSV data back as dictionaries
with open(filename, "r", newline="") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(f"Employee {row['name']} works in {row['department']}.")CSV written successfully.
--- Reading CSV ---
Employee Bob works in HR.
Employee Alice works in Engineering.Пошаговая реализация
- Экспорт записей электронных таблиц для финансового анализа
- Импорт каталогов контактов в базы данных
- Форматирование статистических результатов вычислительных сценариев
Часто задаваемые вопросы
Почему мне нужно указывать newline="" при открытии файла CSV?
Это требуется внутренней программе записи модуля csv, чтобы предотвратить вставку дополнительных пустых строк, особенно на платформах Windows.
Как я могу проанализировать файл CSV, в котором вместо запятых используются табуляции?
Вы можете передать параметр разделителя программе чтения или записи, например, csv.reader(file, delimiter='\t').
Связанные темы
Узнайте, как читать и записывать файлы на Python. Освойте open(), read(), write() и менеджеры контекста для безопасной обработки файловых операций без утечек ресурсов.
Разбор JSON PythonУзнайте, как читать, записывать и анализировать данные JSON в Python. Освойте json.loads, json.dumps и настройте кодеры/декодеры JSON.
Рекомендуемые ресурсы Python
Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.
Как читать и анализировать CSV-файл в Python
Узнайте, как читать и анализировать файлы CSV в Python с помощью встроенного модуля csv. Освойте чтение с помощью списков, средств чтения словарей и пользовательских разделителей.
Шпаргалка по строковым методам Python
Полное справочное руководство по манипулированию строками в Python. Мастер форматирования, поиска, разделения, замены и проверки свойств строк.
Python против JavaScript: какой язык программирования лучше?
Всестороннее сравнение Python и JavaScript. Изучите синтаксические различия, производительность, варианты использования (серверная и клиентская части) и примеры кодирования.