我正在用 Clojure 编写一个函数,它将逐个字符地处理文件。我知道 Java 的 BufferedReader 类具有读取一个字符的 read() 方法,但我是 Clojure 的新手,不知道如何使用它。目前,我只是尝试逐行执行文件,然后打印每个字符。
(defn process_file [file_path]
(with-open [reader (BufferedReader. (FileReader. file_path))]
(let [seq (line-seq reader)]
(doseq [item seq]
(let [words (split item #"\s")]
(println words))))))
给定具有此文本输入的文件:
我们诚挚地接受国际捐赠,但我们不能就从美国境外收到的捐赠的税务处理作出任何声明。仅美国法律就淹没了我们的小员工。
我的输出如下所示:
[International donations are gratefully accepted, but we cannot make]
[any statements concerning tax treatment of donations received from]
[outside the United States. U.S. laws alone swamp our small staff.]
虽然我希望它看起来像:
["international" "donations" "are" .... ]
所以我的问题是,如何将上面的函数转换为逐字符读取?甚至,如何让它像我期望的那样工作?此外,任何使我的 Clojure 代码更好的提示将不胜感激。