Clojure:
Работа с CSV

Как:

Давайте закатаем рукава и разберём файл CSV в Clojure.

(require '[clojure.data.csv :as csv])
(require '[clojure.java.io :as io])

(with-open [reader (io/reader "data.csv")]
  (let [data (csv/read-csv reader)]
    (doseq [row data]
      (println row))))

Пример вывода для CSV с “name,age” будет следующим:

["John" "30"]
["Jane" "25"]
["Doe" "40"]

Для записи данных в файл CSV:

(with-open [writer (io/writer "output.csv")]
  (csv/write-csv writer [["name" "age"]
                         ["John" "30"]
                         ["Jane" "25"]
                         ["Doe" "40"]]))

Это запишет указанные строки в output.csv.

Глубокое погружение

Обработка CSV в Clojure довольно проста по сравнению с другими языками - без лишних сложностей. Исторически, простота CSV сделала его широко распространённым для обмена данными, опережая многие форматы данных. Альтернативы включают JSON, XML, или YAML, но CSV выигрывает там, где ключевыми являются простота или совместимость с электронными таблицами. Библиотека clojure.data.csv предоставляет основы для разбора и записи CSV, построенные на эффективных потоках ввода-вывода Java для хорошей производительности.

Смотрите также

  1. CSV библиотека Clojure: https://github.com/clojure/data.csv
  2. Подробнее о CSV: https://tools.ietf.org/html/rfc4180
  3. Для погружения в Clojure: https://clojure.org/