如何逐行编写 EDN? (吐,散列图序列)
How can I write an EDN line by line? (spit, seq of hashmaps)
我有这样的数据
tab = ({"123" data} {"456" data} ...
(无论如何,它是哈希图的惰性序列)。
我想把它逐行写入一个edn文件,所以我这样做了
(map (fn[x] (spit "test.edn" x :append true)) tab)
问题是我想在文件中包含这个:
{"123" data}
{"456" data}
但是好像是这样追加的
{"123" data}{"456" data}
有办法解决吗?
我想我必须添加 "newline" 但我不知道该怎么做,因为输入不是字符串。
谢谢!
抱歉,我终于找到了,希望它能帮助一些人,因为我没有在互联网上找到它(我的意思是没有简单的答案)。
(map (fn[x] (spit "test.edn" (str x "\n") :append true)) tab)
下午好。
(doseq [x tab]
(spit "test.edn" (prn-str x) :append true))
因此,对于 tab
中的每个项目,将其转换为后跟换行符的可读字符串,然后将该字符串附加到 test.edn
.
您不应该为此使用 map
,原因如下:
map
是懒惰的,因此不会打印整个序列,除非你强制它
map
保留了序列的头部,这里只会浪费内存
我有这样的数据
tab = ({"123" data} {"456" data} ...
(无论如何,它是哈希图的惰性序列)。
我想把它逐行写入一个edn文件,所以我这样做了
(map (fn[x] (spit "test.edn" x :append true)) tab)
问题是我想在文件中包含这个:
{"123" data}
{"456" data}
但是好像是这样追加的
{"123" data}{"456" data}
有办法解决吗? 我想我必须添加 "newline" 但我不知道该怎么做,因为输入不是字符串。
谢谢!
抱歉,我终于找到了,希望它能帮助一些人,因为我没有在互联网上找到它(我的意思是没有简单的答案)。
(map (fn[x] (spit "test.edn" (str x "\n") :append true)) tab)
下午好。
(doseq [x tab]
(spit "test.edn" (prn-str x) :append true))
因此,对于 tab
中的每个项目,将其转换为后跟换行符的可读字符串,然后将该字符串附加到 test.edn
.
您不应该为此使用 map
,原因如下:
map
是懒惰的,因此不会打印整个序列,除非你强制它map
保留了序列的头部,这里只会浪费内存