但我正在处理一些用韩文写的数据。我有一个用于英文txt文件的单词频率脚本,但是当我传递包含Hangul字符的UTF-8 txt文件时脚本失败。具体来说,它似乎基本上将所有字符都读为空格。这是结果,存储在.csv文件中:
, 290668
1, 2
2, 5
3d, 1
4, 1
55, 1
6, 1
6mm, 2
709, 2
710, 1
d, 1
j, 87
k, 1
m, 14
p, 19
pd100, 1
y, 1
考虑到文件中的文本不包含这些字符,这似乎是一个问题。那么如何让我的代码读取hangul?这是我目前的代码:
defmodule WordFrequency do
def wordCount(readFile) do
readFile
|> words
|> count
|> tocsv
end
defp words(file) do
file
|> File.stream!
|> Stream.map(&String.trim_trailing(&1))
|> Stream.map(&String.split(&1,~r{[^A-Za-z0-9_]}))
|> Enum.to_list
|> List.flatten
|> Enum.map(&String.downcase(&1))
end
defp count(words) when is_list(words) do
Enum.reduce(words, %{}, &update_count/2)
end
defp update_count(word, acc) do
Map.update acc, String.to_atom(word), 1, &(&1 + 1)
end
defp tocsv(map) do
File.open("wordfreqKor.csv", [:write, :utf8], fn(file) ->
Enum.each(map, &IO.write(file, Enum.join(Tuple.to_list(&1), ", ")<>"\n"))
end)
end
end
WordFrequency.wordCount("myfile.txt")
非常感谢您的建议!