使用Ruby,读取包含名称/值对的文件到哈希中

时间:2010-11-07 21:21:28

标签: ruby

我有一个文件在每一行都有一个名称/值对,我想打开文件,读取每一行并初始化一个哈希。

文件:

john, 234
joe, 2222

并加载一个哈希,这样我就可以遍历键值对。

4 个答案:

答案 0 :(得分:19)

Hash[*File.read('f.txt').split(/[, \n]+/)]

答案 1 :(得分:8)

Hash[File.read('some.txt').split("\n").map{|i|i.split(', ')}]

Hash[File.read('some.txt').scan(/(.+?), (.+)/)]

答案 2 :(得分:4)

file_data = {}
File.open('some_file', 'r') do |file|
  file.each_line do |line|
    line_data = line.split(',')
    file_data[line_data[0]] = line_data[1]
  end
end

您可能希望添加一些验证,但这是完成您所需的简单方法。

答案 3 :(得分:4)

f = <<EOF
john, 234
joe, 2222
EOF

p Hash[*f.split(/, |\n/)]

方法#split给出一个看起来像[“john”,“234”,“joe”,“2222”]的数组。 *(AKA splat)运算符将此数组转换为一堆参数。 Hash#[]接受这一组参数(当存在偶数个参数时)并传递散列。