2012-11-06 21 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庫會盡可能在空的盡頭。希望你會得到你的空白元素。