我有这个函数来读取文件并将其转换为两个元素列表的列表:
(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