ファイルを文字ごとに処理する関数をClojureで作成しています。Java の BufferedReader クラスに 1 文字を読み取る 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 コードを改善するためのヒントがあれば大歓迎です。