阅读clojure文件后,如何逐行读取特定行中的特定字符串?

时间:2018-06-25 07:15:37

标签: file clojure readfile

我是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)

现在不知道如何打印患者,即我的defn名称和所有措施

有人可以帮助我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

在函数中用名称定义事物时,使用let比def更安全,更容易。 def为整个命名空间(通常是整个文件)定义了它,并让它有了一个名称,直到它关闭为止。

在这种情况下,让Clojure读取表达式并将其转换为数据结构非常有意义。如果文件是您要运行或使用tools.reader的函数,则可以使用load-file函数来实现。

如果使用加载文件方法,则可以使用clojure.repl / source函数进行打印;如果使用tools.reader路径,则可以进行打印。