【发布时间】:2012-07-26 12:34:19
【问题描述】:
我正在用 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 代码更好的提示将不胜感激。
【问题讨论】:
-
如果您使用
prn而不是println,输出会是什么样子?println不打印引号,因此您实际上可能会得到您期望的结果(例如["International" "donations" "are"...。
标签: clojure