(interpose sep) (interpose sep coll)
Returns a lazy seq of the elements of coll separated by sep. Returns a stateful transducer when no collection is provided.
;; The quintessential interpose example:
user> (def my-strings ["one" "two" "three"])
user> (interpose ", " my-strings)
=> ("one" ", " "two" ", " "three")
user> (apply str (interpose ", " my-strings))
=> "one, two, three"
;; Might use clojure.string/join if the plan is to join
(use '[clojure.string :only (join)])
user> (join ", " my-strings)
=> "one, two, three"
;This example converts what would be comma-separated values into pipe '|' ;separated values for alternate database loads. By switching delimiters,
;quotes can be eliminated from each sequence element, which are not
;needed for some databases.
(def test-data-in '(("9990999" "43" "ROADWAY" "MORRISON, VAN X DMD" "43 ROADWAY" "SOMETHINGTON" "XA" "00000" "501" "18050" "2500" "1180" "14370" "0") ("9990998" "25" "GARDEN PATH" "JANE SMITH N" "25 GARDEN PATH" "SOMETHINGTON" "ZA" "00000" "501" "1120" "600" "80" "440" "0"))
(def test-data-out (map #(concat (interpose \\| %) (list \\| "\
")) d2))
test-data-out
(("9990999" \\| "43" \\| "ROADWAY" \\| "MORRISON, VAN X DMD" \\| "43 ROADWAY" \\| "SOMETHINGTON" \\| "ZA" \\| "00000" \\| "501" \\| "18050" \\| "2500" \\| "1180" \\| "14370" \\| "0" \\| "\
") ("9990998" \\| "25" \\| "GARDEN PATH" \\| "JANE SMITH N" \\| "25 GARDEN PATH" \\| "SOMETHINGTON" \\| "ZA" \\| "00000" \\| "501" \\| "1120" \\| "600" \\| "80" \\| "440" \\| "0" \\| "\
"))
(doseq [in-seq d3] (doseq [val in-seq] (spit "temp1.csv" val :append true)))
cat temp1.csv
9990999|43|ROADWAY|MORRISON VAN X DMD|43 ROADWAY|SOMETHINGTON|ZA|00000|501|18050|2500|1180|14370|0|
9990998|25|GARDEN PATH|JANE SMITH N N|25 GARDEN PATH|SOMETHINGTON|A|00000|501|1120|600|80|440|0|