#:g1: fare-csvの紹介

Posted 2014-03-27 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の87日目です。

fare-csvとはなにか

 fare-csvは、Fare Rideau(fare)氏作のリストとCSVファイルを相互変換するライブラリです。

パッケージ情報

パッケージ名fare-csv
Quicklisp
CLiKihttp://cliki.net/fare-csv
Quickdocshttp://quickdocs.org/fare-csv

インストール方法

(ql:quickload :fare-csv)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 CSVファイルを読むにはread-csv系関数、書き出すにはwrite-csv系の関数を利用、と基本的にシンプルに利用できます。

(with-output-to-string (out)
  (fare-csv:write-csv-lines (*:group (*:iota 100) 10)
                            out))
;=>  "0,1,2,3,4,5,6,7,8,9^M ※CRLF
;    10,11,12,13,14,15,16,17,18,19^M
;    20,21,22,23,24,25,26,27,28,29^M
;    30,31,32,33,34,35,36,37,38,39^M
;    40,41,42,43,44,45,46,47,48,49^M
;    50,51,52,53,54,55,56,57,58,59^M
;    60,61,62,63,64,65,66,67,68,69^M
;    70,71,72,73,74,75,76,77,78,79^M
;    80,81,82,83,84,85,86,87,88,89^M
;    90,91,92,93,94,95,96,97,98,99^M
;    "

(with-input-from-string (in "0,1,2,3,4,5,6,7,8,9^M
10,11,12,13,14,15,16,17,18,19^M
20,21,22,23,24,25,26,27,28,29^M
30,31,32,33,34,35,36,37,38,39^M
40,41,42,43,44,45,46,47,48,49^M
50,51,52,53,54,55,56,57,58,59^M
60,61,62,63,64,65,66,67,68,69^M
70,71,72,73,74,75,76,77,78,79^M
80,81,82,83,84,85,86,87,88,89^M
90,91,92,93,94,95,96,97,98,99^M
")
  (loop :for line := (fare-csv:read-csv-line in) :while line
        :collect line))
;=>  (("0" "1" "2" "3" "4" "5" "6" "7" "8" "9") ("10" "11" "12" "13" "14" "15" "16" "17" "18" "19") ("20" "21" "22" "23" "24" "25" "26" "27" "28" "29")
;     ("30" "31" "32" "33" "34" "35" "36" "37" "38" "39") ("40" "41" "42" "43" "44" "45" "46" "47" "48" "49") ("50" "51" "52" "53" "54" "55" "56" "57" "58" "59")
;     ("60" "61" "62" "63" "64" "65" "66" "67" "68" "69") ("70" "71" "72" "73" "74" "75" "76" "77" "78" "79") ("80" "81" "82" "83" "84" "85" "86" "87" "88" "89")
;     ("90" "91" "92" "93" "94" "95" "96" "97" "98" "99"))

 良く利用しそうなところは、

位でしょうか。
その他、エスケープ文字や改行文字の設定等、CSVの形式の設定も可能になっています。

まとめ

 今回は、fare-csvを紹介してみました。
自分がこれまで利用してきた感想としては、大抵の用途ではこのライブラリで間に合うかなと思っています。

comments powered by Disqus