Source

csvlib /

Filename Size Date modified Message
src
test
50 B
47 B
152 B
1.5 KB
236 B

csvlib - CSV library for Clojure

About

Library to read and write CSV files with Clojure.

Usage

Reading

Assume log.csv has the following data

Date,IP
2/20/11 7:58 AM,1.0.1.0

Then you can do

; Simple use
(let [records (read-csv "log.csv")]
  (println ((first records) 0)))

;=> Date

; With headers
(let [records (read-csv "log.csv" :headers? true)]
  (println ((first records) "IP")))

;=> 1.0.1.0

; With conversion
(let [df (DateFormat/getInstance)
      convert {"Date" #(.parse df %)}
      records (read-csv "log.csv" :headers? true :convert convert)]
  (println ((first records) "Date")))

;=> #<Date Sun Feb 20 07:58:00 PST 2011>

Writing

; Simple usage
(write-csv [[1 2 3] [4 5 6]] "points.csv")

; With headers
(write-csv [[1 2 3] [4 5 6] "points.csv" :headers ["x" "y" "z"])

; Write maps, first map will be used as headers information
(write-csv [{"x" 1 "y" 2 "z" 3} {"x" 4 "y" 5 "z" 6}] "points.csv")

; Use a formatter
(def format { "x" : #(str (* % 2)) })
(write-csv [{"x" 1 "y" 2 "z" 3} {"x" 4 "y" 5 "z" 6}] "points.csv"
            :format format)

; Use a different delimiter
(write-csv [[1 2 3] [4 5 6]] "points.csv" :delimiter \|)

License

Copyright (C) 2010 Miki Tebeka <miki.tebeka@gmail.com>

Distributed under the Eclipse Public License, the same as Clojure.

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.