Racket で csv ファイルをダウンロードして解析するにはどうすればよいですか?
3055 次
4 に答える
12
を使用get-pure-port
してファイルをダウンロードし、Planetライブラリ(require (planet neil/csv)
)を使用して解析します。
次の例では、さまざまなガラパゴス諸島のサイズと、各島で見つかった種の数に関するデータを含む csv ファイルをダウンロードして解析します。
#lang racket
(require (planet neil/csv:1:=7) net/url)
(define galapagos-url
(string->url
"http://www.stat.washington.edu/~handcock/536/Data/galapagos.csv"))
(define make-galapagos-csv-reader
(make-csv-reader-maker
'((separator-chars #\,)
(strip-leading-whitespace? . #t)
(strip-trailing-whitespace? . #t))))
(define (all-rows url make-reader)
(define next-row (make-reader (get-pure-port url)))
(define (loop)
(define row (next-row))
(if (empty? row)
'()
(cons row (loop))))
(loop))
(all-rows galapagos-url make-galapagos-csv-reader)
返される最初の行は次のとおりです。
'(("Island"
"Observed.species"
"Native.species"
"Area(km^2)"
"Elevation(m)"
"Distance.nearest.island(km)"
"Distance.Santa.Cruz(km)"
"Area.adj.island(km^2)")
("Baltra" "58" "23" "25.09" "" "0.6" "0.6" "1.84")
("Bartolome" "31" "21" "1.24" "109" "0.6" "26.3" "572.33")
("Caldwell" "3" "3" "0.21" "114" "2.8" "58.7" "0.78")
于 2012-06-04T14:56:54.777 に答える
8
Neil には csv-reading という新しいライブラリがあるので、代わりにそれを使用してください。
まず、raco を使用してパッケージをインストールします。
raco pkg install csv-reading
CSV ファイルをリストに変換するためのヘルパー関数を次に示します。
(require csv-reading)
(define (csvfile->list filename)
(call-with-input-file filename
csv->list))
CSV ファイルをダウンロードしてリストに変換するには、次の操作を行います。
(require net/url)
((compose csv->list get-pure-port string->url) "http://example.com")
csv-reading ライブラリについては、こちらを参照してください: csv-reading library、これは最新バージョンです (そして、他の回答は非推奨のものを使用しています)。
于 2016-06-08T22:39:39.167 に答える