Gauche で CSV 形式のデータを読み込む

make-csv-reader で、入力ポートを引数とする手続きを作る。
この手続きはポートからレコードを1つ読み込み、フィールドのリストを返す。
port->list を使って、返されたフィールドのリストをリストに追加していく。

(use text.csv)

(define (read-csv file)
  (let ((reader (make-csv-reader #\,)))
       (call-with-input-file file
                             (lambda (in)
                                     (port->list reader in)))))

(define (main args)
  (if (null? (cadr args))
      (error "CSV file is required")
      (print (read-csv (cadr args))))
  0)

実行結果

$ cat test.csv
"上杉謙信","ken@foo.com","09023421011"
"織田信長","oda@hoge.com","08034528761"
"徳川家康","toku@yahoo.com","0230989124"
"豊臣秀吉","saru@gmail.com","08013457812"
"毛利元就","nari@yahoo.com","02056720981"

$ ./read-csv.scm test.csv
((上杉謙信 ken@foo.com 09023421011) (織田信長 oda@hoge.com 08034528761) (徳川家康 toku@yahoo.com 0230989124) (豊臣秀吉 saru@gmail.com 08013457812) (毛利元就 nari@yahoo.com 02056720981))

参考:Gauche リファレンスマニュアル: CSVテーブル
   Gauche ユーザリファレンス: 6.19 入出力

プログラミングGauche
プログラミングGauche

posted with amazlet at 09.07.23
Kahuaプロジェクト
オライリージャパン
売り上げランキング: 51330
«
»