Как читать CSV-файл python

Обновлено: 30.06.2024

В этом уроке мы научимся читать CSV-файлы разных форматов в Python с помощью примеров.

Для этой задачи мы будем использовать модуль csv, встроенный в Python. Но сначала нам нужно будет импортировать модуль как:

Мы уже рассмотрели основы использования модуля csv для чтения и записи в файлы CSV. Если вы не знаете, как использовать модуль csv, ознакомьтесь с нашим руководством по Python CSV: чтение и запись файлов CSV

Основное использование csv.reader()

Давайте рассмотрим простой пример использования csv.reader(), чтобы освежить ваши знания.

Пример 1. Чтение CSV-файлов с помощью csv.reader()

Предположим, у нас есть файл CSV со следующими записями:

Мы можем прочитать содержимое файла с помощью следующей программы:

Вывод

Здесь мы открыли файл innovators.csv в режиме чтения с помощью функции open().

Чтобы узнать больше об открытии файлов в Python, посетите: Ввод/вывод файлов Python

Затем csv.reader() используется для чтения файла, который возвращает итерируемый объект чтения.

Затем объект чтения повторяется с помощью цикла for для печати содержимого каждой строки.

Теперь мы рассмотрим файлы CSV в разных форматах. Затем мы узнаем, как настроить функцию csv.reader() для их чтения.

Файлы CSV с пользовательскими разделителями

По умолчанию в качестве разделителя в CSV-файле используется запятая. Однако некоторые файлы CSV могут использовать разделители, отличные от запятой. Несколько популярных из них | и \т .

Предположим, файл innovators.csv в примере 1 использует табуляцию в качестве разделителя. Чтобы прочитать файл, мы можем передать дополнительный параметр-разделитель в функцию csv.reader().

Давайте рассмотрим пример.

Пример 2. Чтение CSV-файла с разделителем табуляции

Вывод

Как мы видим, необязательный параметр delimiter = '\t' помогает указать объект чтения, из которого CSV-файл, из которого мы читаем, имеет табуляцию в качестве разделителя.

Файлы CSV с начальными пробелами

Некоторые CSV-файлы могут содержать пробел после разделителя. Когда мы используем функцию csv.reader() по умолчанию для чтения этих CSV-файлов, мы также получим пробелы в выводе.

Чтобы удалить эти начальные пробелы, нам нужно передать дополнительный параметр skipinitialspace. Давайте рассмотрим пример:

Пример 3. Чтение CSV-файлов с начальными пробелами

Предположим, у нас есть CSV-файл с именем people.csv со следующим содержимым:

Мы можем прочитать CSV-файл следующим образом:

Вывод

Эта программа аналогична другим примерам, но имеет дополнительный параметр skipinitialspace, для которого задано значение True.

Это позволяет объекту чтения узнать, что записи имеют начальные пробелы. В результате начальные пробелы, которые присутствовали после разделителя, удаляются.

Файлы CSV с кавычками

Некоторые файлы CSV могут содержать кавычки вокруг каждой или некоторых записей.

Давайте возьмем в качестве примера файл quotes.csv со следующими записями:

Использование csv.reader() в минимальном режиме приведет к выводу с кавычками.

Чтобы удалить их, нам придется использовать еще один необязательный параметр, называемый цитированием.

Давайте рассмотрим пример того, как читать приведенную выше программу.

Пример 4. Чтение CSV-файлов с кавычками

Вывод

Как видите, мы передали csv.QUOTE_ALL в параметр цитирования. Это константа, определяемая модулем csv.

csv.QUOTE_ALL указывает объекту чтения, что все значения в CSV-файле заключены в кавычки.

Есть 3 другие предопределенные константы, которые вы можете передать в параметр цитирования:

  • csv.QUOTE_MINIMAL — указывает объекту читателя, что CSV-файл имеет кавычки вокруг тех записей, которые содержат специальные символы, такие как разделитель, кавычка или любой из символов в конце строки.
  • csv.QUOTE_NONNUMERIC – указывает объекту чтения, что в CSV-файле нечисловые записи заключены в кавычки.
  • csv.QUOTE_NONE — указывает объекту чтения, что ни одна из записей не заключена в кавычки.

Диалекты в модуле CSV

Обратите внимание, что в примере 4 мы передали несколько параметров (цитирование и skipinitialspace) в функцию csv.reader().

Эта практика приемлема при работе с одним или двумя файлами. Но это сделает код более избыточным и уродливым, как только мы начнем работать с несколькими CSV-файлами с похожими форматами.

Чтобы решить эту проблему, модуль csv предлагает диалект в качестве дополнительного параметра.

Диалект помогает сгруппировать многие определенные шаблоны форматирования, такие как разделитель , skipinitialspace , цитирование , escapechar, в одно диалектное имя.

Затем его можно передать в качестве параметра нескольким экземплярам записи или чтения.

Пример 5. Чтение CSV-файлов с использованием диалекта

Предположим, у нас есть CSV-файл (office.csv) со следующим содержимым:

Файл CSV имеет начальные пробелы, кавычки вокруг каждой записи и использует символ | разделитель.

Вместо того, чтобы передавать три отдельных шаблона форматирования, давайте посмотрим, как использовать диалекты для чтения этого файла.

Вывод

Из этого примера видно, что функция csv.register_dialect() используется для определения пользовательского диалекта. Он имеет следующий синтаксис:

Для пользовательского диалекта требуется имя в виде строки. Другие спецификации можно выполнить либо путем передачи подкласса класса Dialect, либо с помощью отдельных шаблонов форматирования, как показано в примере.

При создании объекта для чтения мы передаем dialect='myDialect', чтобы указать, что экземпляр для чтения должен использовать этот конкретный диалект.

Преимущество использования диалекта заключается в том, что он делает программу более модульной. Обратите внимание, что мы можем повторно использовать «myDialect» для открытия других файлов без повторного указания формата CSV.

Чтение файлов CSV с помощью csv.DictReader()

Объекты класса csv.DictReader() можно использовать для чтения CSV-файла как словаря.

Пример 6: Python csv.DictReader()

Предположим, у нас есть CSV-файл (people.csv) со следующими записями:

Давайте посмотрим, как можно использовать csv.DictReader().

Вывод

Как мы видим, записи первой строки являются ключами словаря. А записи в других строках являются значениями словаря.

Здесь csv_file — это объект csv.DictReader(). Объект можно перебирать с помощью цикла for. csv.DictReader() возвращал тип OrderedDict для каждой строки. Вот почему мы использовали dict() для преобразования каждой строки в словарь.

Обратите внимание, что мы явно использовали метод dict() для создания словарей внутри цикла for.

Примечание. Начиная с Python 3.8, csv.DictReader() возвращает словарь для каждой строки, и нам не нужно явно использовать dict().

Полный синтаксис класса csv.DictReader():

Чтобы узнать об этом подробнее, посетите: класс Python csv.DictReader()

Использование класса csv.Sniffer

Класс Sniffer используется для определения формата CSV-файла.

Класс Sniffer предлагает два метода:

  • sniff(sample, delimiters=None) — эта функция анализирует заданный образец текста CSV и возвращает подкласс диалекта, содержащий все полученные параметры.

Необязательный параметр разделителей можно передать как строку, содержащую возможные допустимые символы-разделители.

  • has_header(sample) – эта функция возвращает значение True или False в зависимости от того, содержит ли образец CSV-файла первую строку в качестве заголовков столбцов.

Давайте рассмотрим пример использования этих функций:

Пример 7. Использование csv.Sniffer() для определения диалекта CSV-файлов

Предположим, у нас есть CSV-файл (office.csv) со следующим содержимым:

Давайте посмотрим, как мы можем определить формат этого файла, используя класс csv.Sniffer():

Вывод

Как видите, мы прочитали только 64 символа из файла office.csv и сохранили его в образце переменной.

Затем этот образец был передан в качестве параметра функции Sniffer().has_header(). Он пришел к выводу, что первая строка должна иметь заголовки столбцов. Таким образом, он вернул True, который затем был распечатан.

Аналогичным образом образец также был передан в функцию Sniffer().sniff(). Он вернул все выведенные параметры как подкласс диалекта, который затем был сохранен в переменной deduced_dialect.

Позже мы повторно открыли CSV-файл и передали переменную deduced_dialect в качестве параметра функции csv.reader() .

В файле office.csv параметры delimiter , quoting и skipinitialspace правильно предсказывались без нашего явного упоминания.

Примечание. Модуль csv также можно использовать для файлов с другими расширениями (например, .txt), если их содержимое имеет правильную структуру.

Давайте посмотрим правде в глаза: вам нужно вводить информацию в свои программы и из них не только с помощью клавиатуры и консоли. Обмен информацией через текстовые файлы — распространенный способ обмена информацией между программами. Одним из самых популярных форматов для обмена данными является формат CSV. Но как вы его используете?

Давайте проясним одну вещь: вам не нужно (и вы не будете) создавать собственный парсер CSV с нуля. Есть несколько вполне приемлемых библиотек, которые вы можете использовать. Библиотека Python csv подойдет для большинства случаев. Если ваша работа требует большого количества данных или числового анализа, в библиотеке pandas также есть возможности анализа CSV, которые справятся с остальными.

В этой статье вы узнаете, как читать, обрабатывать и анализировать CSV из текстовых файлов с помощью Python. Вы увидите, как работают CSV-файлы, изучите важнейшую библиотеку CSV, встроенную в Python, и увидите, как работает парсинг CSV с помощью библиотеки pandas.

Итак, приступим!

Бесплатная загрузка: получите образец главы из книги Основы Python: практическое введение в Python 3, чтобы узнать, как перейти от начального к среднему уровню владения Python с помощью полной учебной программы, актуальной для Python 3.8.

Пройдите тест: проверьте свои знания с помощью нашей интерактивной викторины «Чтение и запись файлов CSV в Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:

Что такое CSV-файл?

Файл CSV (файл значений, разделенных запятыми) – это тип обычного текстового файла, в котором используется определенная структура для организации табличных данных. Поскольку это обычный текстовый файл, он может содержать только фактические текстовые данные, другими словами, печатные символы ASCII или Unicode.

Структура CSV-файла определяется его именем. Обычно файлы CSV используют запятую для разделения каждого конкретного значения данных. Вот как выглядит эта структура:

Обратите внимание, что каждый фрагмент данных отделяется запятой. Обычно первая строка идентифицирует каждую часть данных, другими словами, имя столбца данных. Каждая последующая строка представляет собой фактические данные и ограничивается только размерами файла.

Вообще, символ-разделитель называется разделителем, и используется не только запятая. Другие популярные разделители включают символы табуляции (\t), двоеточия (:) и точки с запятой (;). Для правильного анализа CSV-файла нам необходимо знать, какой разделитель используется.

Откуда берутся CSV-файлы?

Файлы CSV обычно создаются программами, обрабатывающими большие объемы данных. Это удобный способ экспортировать данные из электронных таблиц и баз данных, а также импортировать или использовать их в других программах. Например, вы можете экспортировать результаты программы интеллектуального анализа данных в файл CSV, а затем импортировать его в электронную таблицу для анализа данных, создания графиков для презентации или подготовки отчета к публикации.

С файлами CSV очень легко работать программно. Любой язык, поддерживающий ввод текстовых файлов и работу со строками (например, Python), может напрямую работать с CSV-файлами.

Синтаксический анализ файлов CSV с помощью встроенной библиотеки CSV Python

Библиотека csv предоставляет функции как для чтения, так и для записи в файлы CSV. Разработанный для работы с CSV-файлами, сгенерированными в Excel, он легко адаптируется для работы с различными форматами CSV. Библиотека csv содержит объекты и другой код для чтения, записи и обработки данных из и в файлы CSV.

Чтение файлов CSV с помощью csv

Чтение из CSV-файла выполняется с помощью объекта чтения. Файл CSV открывается как текстовый файл с помощью встроенной в Python функции open(), которая возвращает объект файла. Затем он передается считывателю , который выполняет всю тяжелую работу.

Вот файл employee_birthday.txt:

Вот код для чтения:

В результате получается следующий результат:

Каждая строка, возвращаемая средством чтения, представляет собой список элементов String, содержащих данные, найденные путем удаления разделителей. Первая возвращенная строка содержит имена столбцов, которые обрабатываются особым образом.

Чтение файлов CSV в словарь с помощью csv

Вместо того, чтобы иметь дело со списком отдельных элементов String, вы также можете считывать данные CSV непосредственно в словарь (технически это упорядоченный словарь).

И снова наш входной файл employee_birthday.txt выглядит следующим образом:

Вот код, чтобы на этот раз прочитать его как словарь:

Откуда взялись ключи словаря? Предполагается, что первая строка CSV-файла содержит ключи, используемые для построения словаря. Если в вашем файле CSV их нет, вы должны указать свои собственные ключи, установив необязательный параметр fieldnames в список, содержащий их.

Необязательные параметры чтения Python CSV

Объект чтения может обрабатывать различные стили CSV-файлов, указав дополнительные параметры, некоторые из которых показаны ниже:

разделитель указывает символ, используемый для разделения каждого поля. По умолчанию используется запятая ( ',' ).

quotechar указывает символ, используемый для окружения полей, содержащих символ-разделитель. По умолчанию используется двойная кавычка ( ' " ' ).

escapechar указывает символ, используемый для экранирования символа-разделителя, если кавычки не используются. По умолчанию escape-символ отсутствует.

Эти параметры заслуживают дополнительного пояснения. Предположим, вы работаете со следующим файлом employee_addresses.txt:

Этот CSV-файл содержит три поля: имя , адрес и дату присоединения , разделенные запятыми. Проблема в том, что данные для поля адреса также содержат запятую для обозначения почтового индекса.

Есть три разных способа справиться с этой ситуацией:

Используйте другой разделитель.
Таким образом, запятую можно безопасно использовать в самих данных. Вы используете необязательный параметр delimiter, чтобы указать новый разделитель.

Заключите данные в кавычки.
Специальная природа выбранного вами разделителя игнорируется в строках в кавычках.Таким образом, вы можете указать символ, используемый для цитирования, с помощью необязательного параметра quotechar. Пока этот символ не появляется в данных, все в порядке.

Эскейп-символы-разделители в данных
Эскейп-символы работают так же, как и в строках формата, сводя на нет интерпретацию экранируемого символа (в данном случае разделителя). Если используется escape-символ, его необходимо указать с помощью дополнительного параметра escapechar.

Запись файлов CSV с помощью csv

Вы также можете писать в CSV-файл, используя объект записи и метод .write_row():

Необязательный параметр quotechar сообщает средству записи, какой символ использовать для кавычек полей при записи. Однако использование цитирования определяется необязательным параметром quoting:

  • Если для цитирования задано значение csv.QUOTE_MINIMAL , то .writerow() будет заключать в кавычки поля только в том случае, если они содержат разделитель или кавычку . Это случай по умолчанию.
  • Если для цитирования задано значение csv.QUOTE_ALL , то .writerow() будет цитировать все поля.
  • Если для цитирования задано значение csv.QUOTE_NONNUMERIC , то .writerow() будет заключать в кавычки все поля, содержащие текстовые данные, и преобразовывать все числовые поля в тип данных с плавающей запятой.
  • Если для цитирования задано значение csv.QUOTE_NONE , то .writerow() будет экранировать разделители, а не заключать их в кавычки. В этом случае вы также должны указать значение для дополнительного параметра escapechar.

Чтение файла в виде обычного текста показывает, что файл создается следующим образом:

Запись файла CSV из словаря с помощью csv

Поскольку вы можете считывать наши данные в словарь, будет справедливо, если вы сможете и записать их из словаря:

В отличие от DictReader, параметр fieldnames требуется при записи словаря. Это имеет смысл, если подумать: без списка имен полей DictWriter не может знать, какие ключи использовать для извлечения значений из ваших словарей. Он также использует ключи в именах полей для записи первой строки в виде имен столбцов.

Приведенный выше код создает следующий выходной файл:

Анализ CSV-файлов с помощью библиотеки pandas

Конечно, библиотека Python CSV — не единственная игра в городе. Чтение CSV-файлов возможно и в пандах. Настоятельно рекомендуется, если у вас есть много данных для анализа.

pandas – это библиотека Python с открытым исходным кодом, которая предоставляет высокопроизводительные инструменты анализа данных и простые в использовании структуры данных. pandas доступен для всех установок Python, но он является ключевой частью дистрибутива Anaconda и очень хорошо работает в блокнотах Jupyter для обмена данными, кодом, результатами анализа, визуализациями и повествовательным текстом.

Установить pandas и его зависимости в Anaconda очень просто:

Как и использование pip / pipenv для других установок Python:

Мы не будем вдаваться в подробности того, как работают панды или как их использовать. Для более подробного ознакомления с использованием панд для чтения и анализа больших наборов данных ознакомьтесь с превосходной статьей Шантну Тивари о работе с большими файлами Excel в пандах.

Чтение CSV-файлов с помощью pandas

Чтобы продемонстрировать некоторые возможности Pandas CSV, я создал немного более сложный для чтения файл, который называется hrdata.csv . Содержит данные о сотрудниках компании:

Чтение CSV в кадр данных pandas выполняется быстро и просто:

Вот и все: три строки кода, и только одна из них выполняет реальную работу. pandas.read_csv() открывает, анализирует и читает предоставленный CSV-файл и сохраняет данные в DataFrame. Печать DataFrame приводит к следующему выводу:

Вот несколько моментов, на которые стоит обратить внимание:

  • Во-первых, pandas распознали, что первая строка CSV-файла содержит имена столбцов, и использовали их автоматически. Я называю это Добротой.
  • Однако pandas также использует целочисленные индексы с отсчетом от нуля в DataFrame . Это потому, что мы не сказали ему, каким должен быть наш индекс.

Кроме того, если вы посмотрите на типы данных наших столбцов, вы увидите, что pandas правильно преобразовал оставшиеся столбцы Salary и Sick Days в числа, но столбец Hire Date по-прежнему является строкой. В этом легко убедиться в интерактивном режиме:

Давайте рассмотрим эти проблемы по очереди. Чтобы использовать другой столбец в качестве индекса DataFrame, добавьте необязательный параметр index_col:

Теперь поле Name является нашим индексом DataFrame:

Далее исправим тип данных поля «Дата приема на работу». Вы можете заставить pandas читать данные как дату с помощью дополнительного параметра parse_dates, который определяется как список имен столбцов, которые следует рассматривать как даты:

Обратите внимание на разницу в выводе:

Теперь дата имеет правильный формат, что легко проверить в интерактивном режиме:

Если в ваших CSV-файлах нет названий столбцов в первой строке, вы можете использовать необязательный параметр names, чтобы предоставить список имен столбцов. Вы также можете использовать это, если хотите переопределить имена столбцов, указанные в первой строке.В этом случае вы также должны указать pandas.read_csv() игнорировать существующие имена столбцов, используя необязательный параметр header=0:

Обратите внимание, что, поскольку имена столбцов изменились, столбцы, указанные в необязательных параметрах index_col и parse_dates, также должны быть изменены. Теперь это приводит к следующему результату:

Запись CSV-файлов с помощью pandas

Конечно, если вы не можете снова получить свои данные из панд, это не принесет вам много пользы. Записать DataFrame в CSV-файл так же просто, как и прочитать его. Давайте запишем данные с новыми именами столбцов в новый CSV-файл:

Единственное различие между этим кодом и приведенным выше кодом чтения заключается в том, что вызов print(df) был заменен вызовом df.to_csv() , предоставляющим имя файла. Новый CSV-файл выглядит следующим образом:

Заключение

Если вы понимаете основы чтения CSV-файлов, вам никогда не придется столкнуться с проблемой импорта данных. С большинством задач чтения, обработки и записи CSV можно легко справиться с помощью базовой библиотеки csv Python. Если у вас есть много данных для чтения и обработки, библиотека pandas также предоставляет возможности быстрой и простой обработки CSV.

Пройдите тест: проверьте свои знания с помощью нашей интерактивной викторины «Чтение и запись файлов CSV в Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:

Есть ли другие способы анализа текстовых файлов? Конечно! Библиотеки, такие как ANTLR, PLY и PlyPlus, могут справляться с тяжелым синтаксическим анализом, и если простые манипуляции со строками не сработают, всегда есть регулярные выражения.

Но это темы для других статей…

Бесплатная загрузка: получите образец главы из книги Основы Python: практическое введение в Python 3, чтобы узнать, как перейти от начального к среднему уровню владения Python с помощью полной учебной программы, актуальной для Python 3.8.

Смотреть сейчас Это руководство содержит связанный с ним видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Чтение и запись файлов CSV

Раз в несколько дней получайте короткие и интересные трюки с Python. Никакого спама никогда. Отписаться в любое время. Куратор: команда Real Python.

Python Tricks Dictionary Merge

О Джоне Финчере

Джон преподавал Python и Java в двух средних школах штата Вашингтон. Ранее он был руководителем программы в Microsoft.

В этой статье объясняется, как загружать и анализировать файл CSV в Python.
Во-первых, что такое CSV?
CSV (значения, разделенные запятыми) – это простой формат файлов, используемый для хранения табличных данных, таких как электронные таблицы или базы данных. В файле CSV табличные данные (числа и текст) хранятся в виде обычного текста. Каждая строка файла представляет собой запись данных. Каждая запись состоит из одного или нескольких полей, разделенных запятыми. Использование запятой в качестве разделителя полей является источником названия для этого формата файла.
Для работы с CSV-файлами в Python существует встроенный модуль csv.

Чтение файла CSV

Питон

Вывод вышеуказанной программы выглядит следующим образом:


    • Здесь мы сначала открываем файл CSV в режиме ЧТЕНИЯ. Файловый объект называется csvfile. Файловый объект преобразуется в объект csv.reader. Мы сохраняем объект csv.reader как csvreader.
      • csvreader — это итерируемый объект. Следовательно, метод .next() возвращает текущую строку и переводит итератор на следующую строку. Поскольку первая строка нашего CSV-файла содержит заголовки (или имена полей), мы сохраняем их в списке с именем fields.
        • Теперь мы перебираем оставшиеся строки, используя цикл for. Каждая строка добавляется в список, называемый строками. Если вы попытаетесь напечатать каждую строку, можно обнаружить, что строка — это не что иное, как список, содержащий все значения поля.
          • csvreader.line_num — это не что иное, как счетчик, который возвращает количество итерированных строк.

          Запись в файл CSV

          Питон

          • поля и строки уже определены. fields — это список, содержащий имена всех полей. rows — это список списков. Каждая строка представляет собой список, содержащий значения полей этой строки.
            • Здесь мы сначала открываем файл CSV в режиме записи. Файловый объект называется csvfile. Файловый объект преобразуется в объект csv.writer. Мы сохраняем объект csv.writer как csvwriter.
              • Теперь мы используем метод writerow для записи первой строки, которая представляет собой не что иное, как имена полей.
                • Мы используем метод writerows для одновременной записи нескольких строк.

                Запись словаря в CSV-файл

                Питон

                  • Здесь объект файла (csvfile) преобразуется в объект DictWriter.
                    Здесь мы указываем имена полей в качестве аргумента.
                    • Метод writeheader просто записывает первую строку вашего CSV-файла, используя заранее заданные имена полей.
                      • Метод Writerows просто записывает все строки, но в каждой строке он записывает только значения (не ключи).

                      В итоге наш CSV-файл выглядит так:


                      • В модулях csv может быть задан необязательный параметр dialect, который используется для определения набора параметров, специфичных для конкретного формата CSV. По умолчанию модуль csv использует диалект excel, что делает их совместимыми с электронными таблицами Excel. Вы можете определить свой собственный диалект, используя метод register_dialect.
                        Вот пример:

                      Теперь, определяя объект csv.reader или csv.writer, мы можем указать диалект следующим образом:

                      • Теперь представим себе, что CSV-файл в обычном текстовом виде выглядит следующим образом:
                      • Мы заметили, что разделителем является не запятая, а точка с запятой. Кроме того, строки разделяются двумя символами новой строки вместо одной. В таких случаях мы можем указать разделитель и признак конца строки следующим образом:

                      Итак, это было краткое, но четкое обсуждение того, как загружать и анализировать файлы CSV в программе Python.

                      Вывод: в этом руководстве вы узнаете, как читать файл CSV в Python с помощью встроенного модуля csv.

                      Что такое файл CSV

                      CSV означает значения, разделенные запятыми. Файл CSV – это текстовый файл с разделителями, в котором для разделения значений используется запятая.

                      Файл CSV состоит из одной или нескольких строк. Каждая строка представляет собой запись данных. И каждая запись данных состоит из одного или нескольких значений, разделенных запятыми. Кроме того, все строки файла CSV имеют одинаковое количество значений.

                      Обычно файл CSV используется для хранения табличных данных в виде простого текста. Формат файла CSV довольно популярен и поддерживается многими программными приложениями, такими как Microsoft Excel и Google Spreadsheet.


                      Чтение CSV-файла в Python

                      Чтобы прочитать файл CSV в Python, выполните следующие действия:

                      Сначала импортируйте модуль csv:

                      Во-вторых, откройте CSV-файл с помощью встроенной функции open() в режиме чтения:

                      Если CSV содержит символы UTF8, необходимо указать кодировку следующим образом:

                      В-третьих, передайте объект файла ( f ) в функцию reader() модуля csv. Функция reader() возвращает объект чтения csv:

                      CSV_reader – это повторяемый объект строк из CSV-файла. Таким образом, вы можете перебирать строки CSV-файла с помощью цикла for:

                      Каждая строка представляет собой список значений. Чтобы получить доступ к каждому значению, вы используете обозначение квадратных скобок [] . Первое значение имеет индекс 0. Второе значение имеет индекс 1 и т. д.

                      Например, следующий код обращается к первому значению определенной строки:

                      Наконец, всегда закрывайте файл, если у вас больше нет доступа к нему, вызывая метод close() файлового объекта:

                      Было бы проще использовать оператор with, так как вам не нужно явно вызывать метод close().

                      Ниже показаны все шаги для чтения CSV-файла:

                      Чтение примеров файлов CSV

                      Мы будем использовать файл country.csv, который содержит информацию о стране, включая название, регион, двухбуквенный код страны, трехбуквенный код страны:

                       Пример чтения CSV-файла Python

                      Загрузить файл country.csv

                      Ниже показано, как читать файл country.csv и отображать каждую строку на экране:

                      Первая строка в файле country.csv является заголовком. Чтобы разделить заголовок и данные, вы используете функцию enumerate() для получения индекса каждой строки:

                      В этом примере мы используем функцию enumerate() и указываем индекс первой строки как 1.

                      Внутри цикла, если line_no равен 1, строка является заголовком. В противном случае это строка данных.

                      Еще один способ пропустить заголовок — использовать функцию next(). Функция next() перенаправляет читателю на следующую строку. Например:

                      Следующее читает файл country.csv и вычисляет общую площадь всех стран:

                      Чтение CSV-файла с помощью класса DictReader

                      При использовании функции csv.reader() вы можете получить доступ к значениям CSV-файла, используя скобки, такие как line[0] , line[1] и т. д. Однако использование функции csv.reader() имеет два основных ограничения:

                      • Во-первых, способ доступа к значениям из CSV-файла не так очевиден. Например, строка [0] неявно означает название страны.Было бы более выразительно, если бы вы могли получить доступ к названию страны, например line['country_name'] .
                      • Во-вторых, при изменении порядка столбцов в CSV-файле или добавлении новых столбцов необходимо изменить код, чтобы получить правильные данные.

                      Именно здесь в игру вступает класс DictReader. Класс DictReader также взят из модуля csv.

                      Класс DictReader позволяет создать объект, аналогичный обычному считывателю CSV. Но он сопоставляет информацию каждой строки со словарем ( dict ), ключи которого определяются значениями первой строки.

                      С помощью класса DictReader вы можете получить доступ к значениям в файле country.csv, таким как строка['name'] , строка['area'] , строка['country_code2'] и строка ['country_code3'].< /p>

                      В следующем примере класс DictReader используется для чтения файла country.csv:

                      Если вы хотите, чтобы имена полей отличались от тех, которые указаны в первой строке, вы можете явно указать их, передав список имен полей конструктору DictReader() следующим образом:

                      В этом примере вместо использования значений из первой строки в качестве имен полей мы явно передаем список имен полей конструктору DictReader.

                      Читайте также:

Имя Возраст Профессия
Джек 23 Доктор
Миллер 22 Инженер