2010/04/19

Gauche CSV

勝手がわからなかったのでmemoがてら。サンプルに使ったデータはこちら。
今回のサンプルにはちょっと大きかった。
(use text.csv)
(use gauche.charconv)
(let ((file-name "../../data/43kumamo/43kumamo.csv"))
(length
(call-with-input-file file-name
(cut port->list (make-csv-reader #\,) <>)
:encoding 'shift_jis)))
; -> 1874
(let ((file-name "../../data/43kumamo/43kumamo.csv"))
(length
(call-with-input-file file-name
(lambda (in)
(port->list (make-csv-reader #\,) in))
:encoding 'shift_jis)))
; -> 1874
(let ((file-name "../../data/43kumamo/43kumamo.csv")
(reader (make-csv-reader #\,)))
(length
(call-with-input-file file-name
(lambda (in)
(port->list reader in)) :encoding 'shift_jis)))
; -> 1874
(let ((file-name "../../data/43kumamo/43kumamo.csv")
(reader (make-csv-reader #\,)))
(let/cc skip
(call-with-input-file file-name
(lambda (in)
(port-for-each (lambda (fields)
(skip fields))
(lambda ()
(reader in)))) :encoding 'shift_jis)))
; -> ("43201" "862 " "8610000" "クマモトケン" "クマモトシ" "イカニケイサイガナイバアイ" "熊本県" "熊本市" "以下に掲載がない場合" "0" "0" "0" "0" "0" "0")
(call-with-input-string "\"aaa\",\"b
bb\",\"ccc\",zzz,\"y\"\"Y\"\"y\",xxx" (make-csv-reader #\,))
; -> ("aaa" "b\nbb" "ccc" "zzz" "y\"Y\"y" "xxx")
view raw csv-sample.scm hosted with ❤ by GitHub


参考


今更ながら、どう書く?orgすげーな。shiroさんのコードがあるある。


プログラミングGauche

0 件のコメント:

コメントを投稿