gpt4 book ai didi

clojure - 如何解析和比较文件?

转载 作者:行者123 更新时间:2023-12-04 20:20:57 25 4
gpt4 key购买 nike

我很感激有关如何利用 Clojure 有效解析和比较两个文件的建议/见解。有两个(日志)文件包含员工考勤;从这些文件中,我需要确定两名员工在 工作的所有天数。同期 ,在 同一部门 .以下是日志文件的示例。

注意:每个文件都有不同数量的条目。

第一个文件:

Employee Id     Name         Time In          Time Out          Dept.
mce0518 Jon 2011-01-01 06:00 2011-01-01 14:00 ER
mce0518 Jon 2011-01-02 06:00 2011-01-01 14:00 ER
mce0518 Jon 2011-01-04 06:00 2011-01-01 13:00 ICU
mce0518 Jon 2011-01-05 06:00 2011-01-01 13:00 ICU
mce0518 Jon 2011-01-05 17:00 2011-01-01 23:00 ER

第二个文件:
Employee Id     Name            Time In           Time Out          Dept.
pdm1705 Jane 2011-01-01 06:00 2011-01-01 14:00 ER
pdm1705 Jane 2011-01-02 06:00 2011-01-01 14:00 ER
pdm1705 Jane 2011-01-05 06:00 2011-01-01 13:00 ER
pdm1705 Jane 2011-01-05 17:00 2011-01-01 23:00 ER

最佳答案

如果你不打算定期这样做,


(defn data-seq [f]
(with-open [rdr (java.io.BufferedReader.
(java.io.FileReader. f))]
(let [s (rest (line-seq rdr))]
(doall (map seq (map #(.split % "\\s+") s))))))

(defn same-time? [a b]
(let [a (drop 2 a)
b (drop 2 b)]
(= a b)))

(let [f1 (data-seq "f1.txt")
f2 (data-seq "f2.txt")]

(reduce (fn[h v]
(let [f2 (filter #(same-time? v %) f2)]
(if (empty? f2)
h
(conj h [(first v) (map first f2)])))) [] f1)
)

will get you,

 [["mce0518" ("pdm1705")] ["mce0518" ("pdm1705")] ["mce0518" ("pdm1705")]]

关于clojure - 如何解析和比较文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6750524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com