Как читать и анализировать CSV-файл в Python
Узнайте, как читать и анализировать файлы CSV в Python с помощью встроенного модуля csv. Освойте чтение с помощью списков, средств чтения словарей и пользовательских разделителей.
Обзор
CSV (значения, разделенные запятыми) — это универсальный формат файлов для хранения наборов табличных данных. Независимо от того, импортируете ли вы базы данных, экспортируете электронные таблицы или загружаете журналы, чтение CSV является основным навыком. Python включает в себя специальный высокооптимизированный встроенный модуль «csv», позволяющий легко анализировать файлы CSV без необходимости использования сторонних библиотек, таких как pandas.
Функция `csv.reader` считывает файл построчно и анализирует его, разделяя каждую строку по разделителю-запятой и возвращая списки строк. Если в вашем CSV-файле есть строка заголовка (например, метки столбцов), часто предпочтительнее использовать `csv.DictReader`. Он автоматически анализирует каждую строку в словаре, где ключами являются метки столбцов, что делает код более читабельным и устойчивым к изменениям в порядке столбцов.
При открытии файлов CSV рекомендуется устанавливать `newline=""` в операторе `open()`. Это не позволяет Python выполнять автоматический перевод новой строки, что может привести к ошибкам синтаксического анализа в некоторых операционных системах. Кроме того, всегда указывайте encoding="utf-8"` для обработки специальных символов.
Код и вывод выполнения
Этот сценарий демонстрирует запись примера файла CSV и его чтение с помощью csv.reader и csv.DictReader.
import csv
# Writing a sample CSV file
sample_content = [
["name", "role", "salary"],
["Alice", "Developer", "90000"],
["Bob", "Manager", "110000"]
]
with open("employees.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(sample_content)
# 1. Reading CSV using csv.reader (List representation)
print("--- Using csv.reader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
reader = csv.reader(file)
header = next(reader) # Skip header row
print("Header:", header)
for row in reader:
print(f"Employee: {row[0]} | Role: {row[1]}")
# 2. Reading CSV using csv.DictReader (Dictionary representation)
print("\n--- Using csv.DictReader ---")
with open("employees.csv", "r", newline="", encoding="utf-8") as file:
dict_reader = csv.DictReader(file)
for row in dict_reader:
print(f"Name: {row['name']} | Role: {row['role']} | Salary: {row['salary']}")--- Using csv.reader ---
Header: ['name', 'role', 'salary']
Employee: Alice | Role: Developer
Employee: Bob | Role: Manager
--- Using csv.DictReader ---
Name: Alice | Role: Developer | Salary: 90000
Name: Bob | Role: Manager | Salary: 110000Пошаговая реализация
- Импортируйте встроенный модуль csv в свой скрипт.
- Откройте файл CSV, используя в качестве файла open("employees.csv", "r", newline="",coding="utf-8").
- Передайте объект файла в csv.reader(file), чтобы проанализировать строки файла как списки строк.
- Используйте csv.DictReader(file) для анализа строк как сопоставлений словаря, соответствующих заголовкам столбцов.
Часто задаваемые вопросы
Почему я должен устанавливать newline="" при открытии файла CSV?
Установка newline="" не позволяет Python динамически изменять символы конца строки, гарантируя, что модуль csv сможет правильно анализировать символы новой строки в стиле csv в разных операционных системах.
Как проанализировать файл CSV, в котором вместо запятых используются табуляции или точки с запятой?
Вы можете передать в функцию чтения собственный разделитель: csv.reader(file, delimiter="\t") или csv.reader(file, delimiter=";").
Связанные темы
Узнайте, как читать файлы на Python. Освойте оператор open, readline, readlines и безопасную обработку исключений файлов.
Как записать в файл на PythonУзнайте, как записывать текст в файлы на Python. Освойте разницу между режимами записи («w») и добавления («a») с помощью безопасных контекстных менеджеров.
Рекомендуемые ресурсы Python
Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.
Ввод-вывод файлов Python
Узнайте, как читать и записывать файлы на Python. Освойте open(), read(), write() и менеджеры контекста для безопасной обработки файловых операций без утечек ресурсов.
Памятка по операциям с файлами Python
Краткий справочник по чтению и записи файлов на Python. Освойте открытые режимы, менеджеры контекста и построчное чтение.
Python против JavaScript: какой язык программирования лучше?
Всестороннее сравнение Python и JavaScript. Изучите синтаксические различия, производительность, варианты использования (серверная и клиентская части) и примеры кодирования.