【问题标题】:After a reading a clojure file line-by-line how to fetch a particular string from particular line?在逐行读取 clojure 文件后,如何从特定行获取特定字符串?
【发布时间】:2018-12-03 17:02:09
【问题描述】:

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

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

谁能帮帮我?

谢谢

【问题讨论】:

  • 每个有效的 clojure 文件都可以被视为一个数据结构,因此将其与单纯的行序列一起使用没有多大意义。例如,我应该在这里使用org.clojure/tools.reader,然后使用specter 遍历这个数据结构。

标签: file clojure readfile


【解决方案1】:

当在函数中使用名称定义事物时,使用 let 比使用 def 更安全、更容易。 def 为整个命名空间(通常是整个文件)定义它,并在它关闭之前给它一个名字。

我就是这种情况,让 Clojure 读取表达式并将其转换为适合您的数据结构是很有意义的。如果您的文件是您希望运行的函数,您可以使用 load-file 函数执行此操作;如果您只想将它​​放在数据结构中,则可以使用 tools.reader。

如果你使用加载文件方法,你可以使用 clojure.repl/source 函数打印它,如果你使用 tools.reader 路径,那么你可以打印它。

【讨论】:

    猜你喜欢
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    相关资源
    最近更新 更多