我有一系列序列,每个序列类似于以下内容:
("9990999""43""ROADWAY""MORRISON,VAN X DMD""43 ROADWAY""SOMETHINGTON""XA""00000""501""18050""2500""1180""14370""0")
clojure-csv在这里不会帮助我,因为它 - 应该 - 用嵌入的逗号引用字段.我想在每个字段周围没有引号的管道分隔输出,其中一些包含嵌入的逗号.
我已经看了很多方法来删除双引号字符,包括以下内容,但引号保持不变.
(filter (fn [x] (not (= (str (first (str x))) (str (first (str \")))))) d1)
其中d1是上面的序列.
除了答案之外,我对指向文档的指针更感兴趣.我一直在玩这个但无济于事.
据我所知,你有一系列的字符串.Clojure为序列提供了一个非常具体的toString实现,你可以在这里看到它.
如果您这样做(str d1)
或只是输入d1
repl并按Enter键,您将看到更多或更少的键入内容:字符串序列(字符串打印为双引号中的字符序列).
现在,如果要连接所有字符串,可以执行以下操作:
(apply str d1)
Run Code Online (Sandbox Code Playgroud)
如果你想用逗号分隔打印,你可以这样做:
(apply str (interpose "," d1))
Run Code Online (Sandbox Code Playgroud)
要输出为CSV格式,我建议使用clojure-csv.
最后,如果您只想打印列表但没有字符串的双引号,您可以这样做:
(print d1)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
EDIT1(由于问题的变化而更新):
这可以通过以下方式轻松实现:
(apply str (interpose "|" d1))
Run Code Online (Sandbox Code Playgroud)
请不要注意整个结果周围的双引号,如果print
它或spit
它在一个文件中你将看不到它们,这就是Clojure如何可读地打印字符串.
或者,如果你想要一次输出多个序列,你仍然可以使用clojure-csv但使用不同的分隔符:
(ns csv-test.core
(:require [clojure-csv.core :as csv]))
(def d1 (list "9990999" "43" "ROADWAY" "MORRISON, VAN X DMD" "43 ROADWAY" "SOMETHINGTON" "XA" "00000" "501" "18050" "2500" "1180" "14370" "0"))
(print (csv/write-csv [d1] :delimiter "|"))
;;prints:
;;9990999|43|ROADWAY|MORRISON, VAN X DMD|43 ROADWAY|SOMETHINGTON|XA|00000|501|18050|2500|1180|14370|0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1863 次 |
最近记录: |