2014-02-11 79 views

回答

2

如果你不想用手做它,你可以使用一個CSV庫,如:

https://github.com/clojure/data.csv

https://github.com/davidsantiago/clojure-csv

然後你會在保存方面,如果你的需求變化(例如你想允許值的空格,分隔符的變化,你想引用,...),因爲你可以很容易地適應。但是,直接分割單行也是如此:

(require '[clojure.java.io :as io] 
     '[clojure.string :as string]) 

(with-open [rd (io/reader (io/file "/path/to/file"))] 
    (->> (line-seq rd) 
     (map #(.split ^String % "\t")) 
     (mapv vec))) 

不過,如果我是你,我會去圖書館。

4

可以使用data.csv的Contrib庫:

;; in your :dependencies 
[org.clojure/data.csv "0.1.2"] 

;; at the REPL 
(require '[clojure.data.csv :as csv]) 

(csv/read-csv 
    (java.io.StringReader. "some field\tanother-field\ta third field") 
    :separator \tab) 
;= (["some field" "another-field" "a third field"]) 

(使用類似(with-open [rdr (clojure.java.io/reader f)] (vec (csv/read-csv rdr :separator \tab)))從TSV文件f讀取數據。)