Существует множество табличных форматов данных. CSV (comma-separated values, или значения, разделённые запятыми) является одним из основных форматов, он часто используется для передачи и экспорта данных. Для определения CSV нет точного стандарта, но сам формат описывает себя как RFC 4180.

Далее показано, как можно парсировать CSV-отформатированные данные.

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

Как парсировать CSV данные в Go?

1. Создайте файл data.csv со следующим содержимым:

2. Создайте файл data.go со следующим содержимым:

3. Запустите код через go run data.go;
4. Посмотрите на результат в терминале:

парсинг csv

5. Создайте файл data_uncommon.csv со следующим содержимым:

6. Создайте файл data_uncommon.go со следующим содержимым:

7. Запустите код через go run data_uncommon.go;
8. Посмотрите на результат в терминале:

парсинг golang csv

Функция NewReader() для чтения CSV файла

Вместо чтения информации строка за строкой с использованием strings.Split и других методов для парсинга формата CSV,  Golang предоставляет более удобный способ. Функция NewReader из пакета encoding/csv возвращает структуру, что предоставляет API для чтения CSV-файла. Структура Reader сохраняет переменные для настройки параметров read в соответствии с вашими потребностями.

Параметр FieldsPerRecord из Reader является важным для настройки. В данном случае подсчет клеток на строку может стать действительным. По умолчанию, когда параметр установлен на 0, установка касается числа записей в первой строке. Если настроено положительное значение, то количество записей должно совпадать. Если значится отрицательное значение, начало подсчета клеток не будет выполнено.

Другим интересным аспектом конфигурации является параметр Comment, что позволяет вам определять символы комментариев парсированных данных. Таким образом, игнорируется вся строка комментария которая начинается с #.

Go 1.10 не позволяет использовать бессмысленные запятые и настройки комментариев. Это подразумевает несуществующие значения, возврат каретки, новую строку, поврежденные руны и символ замены Юникод. Кроме того, установка запятой и комментария равными друг другу запрещена.

Понравилась статья?

Поддержи наш проект, чтобы мы могли создать больше хорошего контента!