File 在逐行读取clojure文件后,如何从特定行获取特定字符串?
我对clojure不熟悉。在删除特殊字符并逐行读取clojure文件后,我遇到了打印特定字符串的问题。File 在逐行读取clojure文件后,如何从特定行获取特定字符串?,file,clojure,readfile,File,Clojure,Readfile,我对clojure不熟悉。在删除特殊字符并逐行读取clojure文件后,我遇到了打印特定字符串的问题。 我有一个名为example.clj的文件,它看起来像: (defn patient "Some string" (measures patient/symptom-fever patient/symptom-cold . . . . patient/symptom-bp)) 从上面的文件中,我删除了所有特殊字符,并用下面的clojure代码逐行读取文件 (defn loadcljfil
我有一个名为example.clj的文件,它看起来像:
(defn patient
"Some string"
(measures
patient/symptom-fever
patient/symptom-cold
.
.
.
.
patient/symptom-bp))
从上面的文件中,我删除了所有特殊字符,并用下面的clojure代码逐行读取文件
(defn loadcljfile []
(def newstring(clojure.string/replace (slurp "C:/Users/Desktop/example.clj") #"[\[/.(:)\]-]" " "))
(with-open [rdr (reader newstring)]
(doseq [line (line-seq rdr)]
(println line))))
(loadcljfile)
现在不知道如何打印患者,即我的姓名和所有测量值
有人能帮我吗
谢谢当在函数中定义名称时,使用let比使用def更安全、更容易。def为整个名称空间(通常是整个文件)定义它,并让它在关闭之前给某个对象命名 我相信在这种情况下,让Clojure读取表达式并将其转换为数据结构非常有意义。如果您的文件是要运行的函数,或者如果您只想在数据结构中使用tools.reader,则可以使用load file函数执行此操作
如果使用加载文件方法,则可以使用clojure.repl/source函数打印它,如果使用tools.reader路径,则可以直接打印它。每个有效的clojure文件都可以被视为数据结构,因此仅使用行序列来处理它没有多大意义。我应该在这里使用
org.clojure/tools.reader
,然后使用specter
遍历这个数据结构。