ruby - 如何使用 ruby​​ 脚本收集特定类型的数据

标签 ruby file-io

我有 5 个文件 file1.txt file2.txt....file5.txt 然后我有 3 个单词的列表 red white blue

我试图找出 red white blue 出现了多少次以及出现在哪些文件中。

最后的格式应该是:

red = file1.txt, file3.txt, 2
white = file2.txt, 1
blue = file1.txt, file2.txt, file3.txt, 3

这是我目前所拥有的:

files.each do |i|
    curfile = File.new("#{i}","r")
    while (line = curfile.gets)
        mywords.each do |j|
           if (line ~= /\b#{j}\b/)
               ##what kind of data structure should I put the results in??
           end
        end
    end
end

我应该把结果放在什么样的数据结构中?

最佳答案

results = {}
%w(red white blue).each do |word|
  results[word] = Hash.new(0)
  %w(file1.txt file2.txt file3.txt file4.txt file5.txt).each do |file|
    scanner = StringScanner.new(File.read(file))
    while (scanner.scan_until(/\b#{word}\b/)) do
      results[word][file] += 1
    end
  end
end

这将返回一个散列,其中键是颜色,值是文件名的散列和每个文件中的匹配数:

{'red' => {'file1.txt' => 1, 'file2.txt' => 2}, 'blue' => {'file1.txt' => 1}} 

关于ruby - 如何使用 ruby​​ 脚本收集特定类型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3655223/

相关文章:

c - 如何将数据文件输入二维数组

css - 内嵌 ruby​​ 样式宽度标签

ruby-on-rails - 它是如何工作的 - `belongs_to :user, dependent: :destroy`

ruby - 在 Ruby 中是否有性能原因更喜欢大小而不是长度或计数?

Java I/O 问题字符串已写入但未显示在文件上

java - 读取word文件并保存为odt

ruby-on-rails - 为什么将参数传递到 link_to 不起作用?

ruby-on-rails - 如何在 Rails 中正确使用 params.require

从磁盘加载的 Python 字典占用太多内存空间

c - 读取后的 fstat 行为