2012-11-06 22 views
0

我在序列的序列数据的行的末尾添加一个非引述分隔符和每个序列是不同的,但如下的一般模式如下:如何在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中完成所有操作。

回答

2

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

0

你尝试:结束行设置“\ n”

这是该文件说什么:

:结束行

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

默认值:\ n

这是我的尝试:

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

谢谢。我最初并没有看到这一点。你能给我一个例子的指针吗?我在文档中看到:行结束,但不知道如何使用它。 – octopusgrabbus

+0

我试过你的解决方案,但似乎无法使用上面列出的语法,特别是'(with-open [out-data(io/writer out-file)] (csv/write-csv out-数据out-sos)))' – octopusgrabbus

+0

我看不到:与clojure.data.csv关联的行尾。我确实看到它与clojure-csv相关联。这有什么区别吗? – octopusgrabbus

1

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

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

不知道什么是csv库会尽可能在空的尽头。希望你会得到你的空白元素。