gpt4 book ai didi

clojure - 将 csv 读入 clojure 中的列表

转载 作者:行者123 更新时间:2023-12-02 12:17:26 24 4
gpt4 key购买 nike

我知道有很多相关的问题,我已经阅读过它们,但仍然没有对如何阅读-处理-编写有一些基本的了解。以下面的函数为例,它使用 clojure-csv 库来解析一行

(defn take-csv
"Takes file name and reads data."
[fname]
(with-open [file (reader fname)]
(doseq [line (line-seq file)]
(let [record (parse-csv line)]))))

我想获得的是作为 (def data (take-csv "file.csv")) 的结果读入某个集合的数据,然后进行处理。所以基本上我的问题是如何返回记录或者更确切地说是记录列表。

最佳答案

“doseq”通常用于有副作用的操作。在您的情况下,要创建记录集合,您可以使用“map”:

(defn take-csv
"Takes file name and reads data."
[fname]
(with-open [file (reader fname)]
(doall (map (comp first csv/parse-csv) (line-seq file)))))

更好地逐个解析整个文件以减少代码:

(defn take-csv
"Takes file name and reads data."
[fname]
(with-open [file (reader fname)]
(csv/parse-csv (slurp file))))

您还可以使用 clojure.data.csv 而不是 clojure-csv.core。只需在之前的函数中将 parse-csv 重命名为 take-csv 即可。

(defn put-csv [fname table]
(with-open [file (writer fname)]
(csv/write-csv file table)))

关于clojure - 将 csv 读入 clojure 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13641618/

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