如何使用Clojure讀取製表符分隔的文件?一行中可能有空格不符合製表符。閱讀clojure中製表符分隔的文件
如:變換
some field another-field a third field
到
["some field" "another-field" "a third field"]
如何使用Clojure讀取製表符分隔的文件?一行中可能有空格不符合製表符。閱讀clojure中製表符分隔的文件
如:變換
some field another-field a third field
到
["some field" "another-field" "a third field"]
如果你不想用手做它,你可以使用一個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)))
不過,如果我是你,我會去圖書館。
可以使用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
讀取數據。)