0

我在一系列序列中有数据行,每个序列都不同,但遵循如下一般模式:

("44999" "186300" "194300" "0" "380600" "325" "57" "0")

当我使用将序列序列写入文件时

(defn write-csv-file
  "Writes a csv file using a key and an s-o-s"
  [out-sos out-file]

  (if (= dbg 1)
    (println (first out-sos), "\n", out-file))

  (spit out-file "" :append false)
  (with-open [out-data (io/writer out-file)]
      (csv/write-csv out-data out-sos)))
.
.
.
(write-csv-file out-re "re_values.csv")

数据是这样出来的

44999,186300,194300,0,380600,325,57,0

这正是我想要的方式(不带引号),除了,我想在每个序列的末尾加上不带引号的 ','。

我已经尝试(concat one-row (list \,))并尝试在函数中的每个序列的末尾添加一个“,” (list,但我无法在每个序列的末尾得到一个不带引号的“,”。我怎样才能做到这一点?

作为一种解决方法,我可以通过 sed 运行这样的文件以添加尾随逗号,但我想在 Clojure 中完成这一切。

4

3 回答 3

2

我认为您不想“添加逗号”而是添加一个空字段(然后用逗号分隔)。所以,你应该简单地在你的行序列中添加一个空字符串。

于 2012-11-06T19:40:04.043 回答
1

也许将一个空字符串连接到 out-sos 内部的每个序列。Concat 很懒,所以不应该很贵。

(with-open [out-data (io/writer out-file)]
  (csv/write-csv out-data (map #(concat % [""]) out-sos))))

不过,不确定 csv 库最后会用空做什么。希望你能得到你的空元素。

于 2012-11-06T19:41:07.627 回答
0

您是否尝试过 :end-of-line 设置为 ",\n"

这就是文档所说的:

:行结束

包含用于写入 CSV 文件的行尾字符的字符串。

默认值:\n

这是我试过的:

(csv/write-csv data :end-of-line ",\n")
于 2012-11-06T19:07:44.347 回答