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 解析引号中的逗号的主要内容,如果未能解决你的问题,请参考以下文章

CSV 解析包含双引号和逗号的字符串

Python解析CSV忽略带双引号的逗号

Bash:使用引号、逗号和换行符解析 CSV

php解析csv时,特定汉字会导致逗号识别不出来

GROOVY - 解析CSV:忽略双引号内的逗号

如何用Java解析CSV文件