(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")