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
谢谢!那太棒了!我在这里误添加的引号,文件中只有数字。 –