Clojure CSV 解析引号中的逗号
Posted
技术标签:
【中文标题】Clojure CSV 解析引号中的逗号【英文标题】:Clojure CSV Parsing Commas in Quotes 【发布时间】:2015-03-20 06:14:58 【问题描述】:我有一个 CSV 文件如下(已编辑:注意第一个逗号后的空格)
0, "a,a,a,a"
1, "b,b,b,b"
2, "c,c,c,c"
我希望将每一行解析为 2 个字符串的向量,即
[0 "a,a,a,a"]
[1 "b,b,b,b"]
[2 "c,c,c,c"]
以保留引号内的逗号的方式。
但是,data.csv 和 clojure-csv 都提供了 5 个字符串的向量:
[0 "a a a a"]
[1 "b b b b"]
[2 "c c c c"]
我尝试了解析器选项的不同值 (:quote-char "),但仍然没有运气。
这是我的代码:
(with-open [in-file (io/reader "myData.csv")]
(doall
(map println
(take 10 (parse-csv in-file)))))
【问题讨论】:
我用github.com/clojure/data.csv试了一下,得到了你想要的结果refheap.com/98642 是的,它适用于上面的示例(谢谢!)经过一番调查,我注意到我的 CSV 在每个逗号后面都有一个空格,这导致 parse-csv 失败。 【参考方案1】:有clojure.data.csv:
(:require [clojure.data.csv :as csv])
(csv/read-csv (slurp "myData.csv"))
它会产生输出:
(["0" "a,a,a,a"] ["1" "b,b,b,b"] ["2" "c,c,c,c"])
【讨论】:
谢谢。我编辑了原始问题。分隔逗号后的空格似乎破坏了整个解析的工作方式。以上是关于Clojure CSV 解析引号中的逗号的主要内容,如果未能解决你的问题,请参考以下文章