File 在逐行读取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

我对clojure不熟悉。在删除特殊字符并逐行读取clojure文件后,我遇到了打印特定字符串的问题。
我有一个名为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
遍历这个数据结构。