Как сделать разделитель в csv

Обновлено: 06.07.2024

CSV – популярное расширение файлов, которые используются, в основном, для обмена данными между различными компьютерными программами. Чаще всего необходимости в открытии и редактировании таких документов нет. Однако в некоторых случаях перед пользователями может встать такая задача. Программа Excel позволяет это сделать, но в отличие от стандартных файлов в формате XLS и XLSX, простое открытие документа двойным щелчком мыши не всегда дает качественный результат, что может выражаться в некорректном отображении информации. Давайте посмотрим, каким образом можно открыть файлы с расширением CSV в Экселе.

Открываем CSV-файлы

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

CSV – аббревиатура, которая расшифровывается как “Comma-Separated Values” (на русском языке означает “значения, разделенные запятыми”).

Как следует из названия, в таких документах используются разделители:

  • запятая – в англоязычных версиях;
  • точка с запятой – в русскоязычных версиях программы.

Во время открытия документа в Excel основная задача (проблема) заключается в выборе способа кодировки, примененного при сохранении файла. Если будет выбрана не та кодировка, скорее всего, пользователь увидит множество нечитаемых символов, и полезность информации будет сведена к минимуму. Помимо этого, ключевое значение имеет используемый разделитель. Например, если документ был сохранен в англоязычной версии, а затем его пытаются открыть в русскоязычной, скорее всего, качество отображаемой информации пострадает. Причина, как мы ранее отметили, заключается в том, что в разных версиях используются разные разделители. Давайте посмотрим, как избежать этих проблем и как правильно открывать файлы CSV.

Метод 1: двойным щелчком или через контекстное меню

Прежде, чем приступить к более сложным методам, давайте рассмотрим самый простой. Он применим только в тех случаях, когда файл был создан/сохранен и открывается в одной и той же версии программы, а значит, проблем с кодировкой и разделителями быть не должно. Здесь возможно два варианта, опишем их ниже.

Excel установлена как программа по умолчанию для открытия CSV-файлов

Если это так, открыть документ можно как и любой другой файл – достаточно просто дважды щелкнуть по нему.

Открытие файла двойным щелчком мыши в Windows

Для открытия CSV-фалов назначена другая программа или не назначена вовсе

Алгоритм действия в таких ситуациях следующий (на примере Windows 10):

    Щелкаем правой кнопкой мыши по файлу и в открывшемся контекстном меню останавливаемся на команде “Открыть с помощью”.

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

Открытый в Эксель файл в формате CSV

В остальных случаях может показываться нечто подобное:

Некорректное отображение содержимого файла CSV в Эксель

Поэтому описанный метод подходит не всегда, и мы переходим к следующим.

Метод 2: применяем Мастер текстов

Воспользуемся интегрированным в программу инструментом – Мастером текстов:

Запуск Мастера текста в Эксель

    Открыв программу и создав новый лист, чтобы получить доступ ко всем функциям и инструментам рабочей среды, переключаемся во вкладку “Данные”, где щелкаем по кнопке “Получение внешних данных”. Среди раскрывшихся вариантов выбираем “Из текста”.

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

Метод 3: через меню “Файл”

И последний метод, которым можно воспользоваться заключается в следующем:

Заключение

Таким образом, несмотря на кажущуюся сложность, программа Эксель вполне позволяет открывать и работать с файлами в формате CSV. Главное – определиться с методом реализации. Если при обычном открытии документа (двойным щелчком мыши или через контекстное меню) его содержимое содержит непонятные символы, можно воспользоваться Мастером текста, который позволяет выбрать подходящую кодировку и знак разделителя, что напрямую влияет на корректность отображаемой информации.

Преобразуйте Excel в файл CSV, разделителем списка по умолчанию в Windows является запятая (,). В некоторых случаях нам может потребоваться изменить разделитель списка, например, ячейка содержит запятую, что может вызвать ошибки в программе, которая ее использует, поэтому вам необходимо изменить разделитель списка; например, файл CSV под Mac OS X Разделителем списка является точка с запятой (;), и его неудобно изменять.Чтобы унифицировать разделитель списка в двух системах, нам нужно изменить разделитель списка в системе Windows.



4. Разделителем списка по умолчанию является запятая (,), измените разделитель списка на точку с запятой (;) [просто напишите точку с запятой самостоятельно]

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

Power Automate позволяет открывать CSV-файлы с разделителями-запятыми и разделителями-табуляторами непосредственно через действие Запустить Excel.

Действие

Чтобы преобразовать CSV-файл этого типа в XLSX, откройте файл и затем сохраните его как новую книгу Excel с помощью параметра Сохранить документ как в действии Закрыть Excel.

Действие

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

Excel использует разделители списков, определенные в региональных настройках Windows. В некоторых регионах необходимо вручную установить символ точки с запятой в качестве разделителя или применить следующее решение проблемы.

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

Параметр настраиваемого разделителя в действии

Затем запустите пустой документ Excel, используя действие Запустить Excel и вставьте CSV-таблицу в ячейку A1, используя действие Записать в лист Excel.

Заполненное действие *Записать в лист Excel.

Теперь вы можете развернуть действие Закрыть Excel, чтобы сохранить лист Excel как новый файл XLSX.

Работа с CSV файлами в Python их чтение и запись

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

Навигация по посту

Как устроен формат CSV

Основное отличие формата CSV от обычного текста в его структуре, которая проявляется в разделителе. Именно из-за этого этот формат расшифровывается как 'comma separated values' (значения разделенные запятыми). Разделитель не всегда обязан быть в виде запятой, он может принимать и другие виды, например ';'. Разделители так же могут называться делимитер (delimiter). Пример того, как может выглядеть файл:

Первая строка может содержать название заголовки колонок, но это не обязательно. Так же видно, что разделители разделяют значения и из-за этого они не используются в конце строки.

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

Конвертация списка в CSV в Python

Тем не менее в модулях реализованы дополнительные возможности по анализу таких данных. Например преобразование в словарь или определение форматов (диалекта).

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

Как уже говорилось, основной модуль уже установлен вместе с Python. Для чтения файлов используется функция 'reader()', которая возвращает объект для итерации. Так мы можем открыть файл в большинстве случаев:

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

Указание разделителя

По умолчанию считается, что вы используете запятую в качестве делимитра. В моем файле, в качестве разделителя, стоит ';', а файл содержит кириллицу (кириллица имеет значение на Windows). В этом случае файл читается следующим образом:

Конвертация в CSV с делиметром в Python

В случае Windows по умолчанию используется кодировка 'cp1251' и, если вы не укажете 'UTF-8', то может появится ошибка:

  • UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 1: character maps to

Начальные пробелы

Со скриншота выше видно, что пробелы, в начале строки, не обрабатываются должным образом. Что бы убрать пробелы нужно указать параметр 'skipinitialspace':

Конвертация в CSV с учетом пробелов в Python

Кавычки

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

Убрать их можно используя параметр 'quoting':

Конвертация в CSV с учетом кавычек и специальных символов в Python

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

Поиска этой кавычки зависит от того, что указано в параметр 'quoting'. Так значение 'csv.QUOTE_ALL' говорит, что все значения находятся внутри кавычек. Параметр может принимать другие значения:

  • csv.QUOTE_MINIMAL - используется по умолчанию. Кавычки используются в местах содержащие специальные символы (например двойная кавычка из quotechar или сам дилиметр);
  • csv.QUOTE_NONNUMERIC - кавычки используются в нечисловых значениях. Если кавычек в значении не присутствует оно будет преобразовано во float;
  • csv.QUOTE_NONE - кавычки, вокруг значений, не используются.

Если вы установили 'csv.QUOTE_NONE', а в файле все равно экранируются специальные символы, то можно использовать параметр 'escapechar' указывающий на символ экранирования.

Чтение с конвертацией в словарь

Если первая строка у вас содержит заголовки колонок, то вы ее можно преобразовать в ключи словаря. Что бы это сделать, вместо метода 'reader()' используется класс 'DictReader()':

Конвертация словаря в CSV с Python

Тип словаря зависит от версии Python. Если вы используете версию ниже 3.8, то вернется 'OrderedDict', который можно преобразовать в обычный с 'dict()'. В версиях 3.8 и старше возвращается обычный тип словаря.

Параметры у класса аналогичны методу 'reader()'. Мы так же можем определять кавычки и символы экранирования.

Создание шаблона диалекта

Если у вас используется множество разных параметров и идет нарушение принципов DRY (dont repeat yorself), то вы можете использовать диалект (или просто шаблон). В примере мы регистрируем параметры под общим названием 'myDialect' и передаем в функцию или класс:

Автоматическое определение параметров CSV файла

Если используются разные файлы CSV и в каждом из них разные параметры для чтения, мы можем определить их автоматически с классом 'Sniffer'. Результат работы этого класса мы можем передать как диалект:

Определение параметров CSV в Python

Метод 'has_header()' проверяет есть ли в файле заголовки. Аналогично этому методу могут быть использованы и другие методы проверяющие кавычки, делимитры и т.д.

Чтение в pandas

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

Чтение CSV данных с Python и pandas

Запись данных в CSV

Для записи данных есть функция 'writer()'. В эту функцию мы можем передать все те же параметры, что в случае чтения. Базовая запись данных будет выглядеть следующим образом:

Запись списка в CSV в Python

Как и понятно с примера выше:

  • writerow - записывает каждый список построчно;
  • writerows - записывает список списков в файл целиком.

Надобность в 'newline' так же может отличаться в разных ОС. Вы можете указать в функции 'writer' параметр 'lineterminator' со значением '\n', который обозначает символ переноса новой строки. По умолчанию он равен '\r\n':

Аналогично 'lineterminator' могут передаваться следующие параметры:

  • quotechar - символ для экранирования значений попадающие под условия указанные в 'quoting'. По умолчанию этот символ равен двойным кавычкам;
  • quoting - какие значения должны быть экранированы: csv.QUOTE_MINIMAL (если в значении есть делимитер или сам символ экранирования), csv.QUOTE_ALL (все символы), csv.QUOTE_NONNUMERIC (оборачивает в кавычки все нечисловые значения), csv.QUOTE_NONE (не использует кавычки и, если в значениях используется символ делимитера, экранирует его в 'escapechar');
  • escapechar - если поведение с кавычками не установлено, то символы разделителя в значениях экранируются в этот символ.

Запись списка в CSV в Python с учетом специальных символов и кавычек

Запись словаря

Аналогично чтению мы можем выполнить конвертацию словаря в CSV. Для этого есть класс 'DictWriter'. Запись словаря, от его чтения, отличается параметром 'fieldnames' в котором указываются заголовки колонок. Пример такой записи:

Запись словаря в CSV в Python

Параметры, переданные в 'DictWriter', могут быть такими же что и в 'writer'.

Запись с pandas

Что бы сохранить данные с pandas мы сначала должны выполнить конвертацию в 'DataFrame':

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