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

Bla*_*man 10 ruby

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

文件:

john, 234
joe, 2222
Run Code Online (Sandbox Code Playgroud)

并加载一个哈希,以便我可以遍历键值对.

Dig*_*oss 20

Hash[*File.read('f.txt').split(/[, \n]+/)]
Run Code Online (Sandbox Code Playgroud)

  • 好的。正则表达式可以更短:`/, |\n/` (2认同)

Nak*_*lon 10

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

要么

Hash[File.read('some.txt').scan(/(.+?), (.+)/)]
Run Code Online (Sandbox Code Playgroud)


Ed *_* S. 6

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
Run Code Online (Sandbox Code Playgroud)

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


ste*_*lag 5

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

p Hash[*f.split(/, |\n/)]
Run Code Online (Sandbox Code Playgroud)

#split方法给出的数组看起来像[“ john,”,“ 234”,“ joe”,“ 2222”]。*(又名splat)运算符将此数组转换为一堆参数。Hash#[]接收一堆参数(当偶数个参数时)并传递一个哈希值。