如何在Clojure序列的末尾添加一个非引用的分隔符

时间:2012-11-06 18:43:29

标签: clojure

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

("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中完成所有操作。

3 个答案:

答案 0 :(得分:2)

我认为您不想“添加逗号”但添加一个空字段(然后用逗号分隔)。因此,您只需在行序列中添加一个空字符串。

答案 1 :(得分:1)

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

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

不知道csv库在最后会用空做什么。希望你能得到你的空元素。

答案 2 :(得分:0)

您是否尝试过:行尾设置为“,\ n”

这是文档所说的:

  

:结束线

     

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

     

默认值:\ n

这是我尝试过的:

(csv/write-csv data :end-of-line ",\n")