3
我有這個功能來讀取文件並將其轉換爲兩個元素的列表清單:在Clojure中有更好的方法嗎?
(def f1 "/usr/example")
(defn read-file [file]
(let [f
(with-open [rdr (clojure.java.io/reader file)]
(doall (map list (line-seq rdr))))]
(cond
(= file f1) (map #(map read-string (split (first %) #" ")) f)
:else (map #(map read-string (split (first %) #"\t")) f))))
我用cond
到split
正確的文件(我有兩種類型的文件,第一個分離的元素空間和第二個,帶有標籤)。
第一種類型的文件將是這樣的:
"1.3880896237218878E9 0.4758112837388654
1.3889631620596328E9 0.491845185928218"
,而第二個是:
'1.3880896237218878E9\t0.4758112837388654
1.3889631620596328E9\t0.491845185928218"
我得到我想要的結果,例如:
((1.3880896237218878E9 0.4758112837388654) (1.3889631620596328E9 0.491845185928218))
但我想知道是否有一個更清潔的方式來做到這一點,也許使用更少的map
函數或不使用cond
謝謝!那太棒了!我在這裏誤添加的引號,文件中只有數字。 –