我有一个文件在每一行都有一个名称/值对,我想打开文件,读取每一行并初始化一个哈希。
文件:
john, 234
joe, 2222
并加载一个哈希,这样我就可以遍历键值对。
答案 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#[]接受这一组参数(当存在偶数个参数时)并传递散列。