将文件读入哈希值,每个键有2个值?

时间:2018-04-25 14:56:51

标签: ruby regex hash

非常相似的问题:Using Ruby, Reading a file, containing name/value pairs into a hash

文件:

server1, jim, 22 server2, bob, 44

试过这个正则表达式:

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

但我明白了: odd number of arguments for Hash (ArgumentError)

我尝试这样做:http://rubular.com/r/BE6ZG2nTMw

接近这个的方法是什么?问题是哈希初始化的方式还是我的正则表达式?

1 个答案:

答案 0 :(得分:1)

我想这是预期的结果:

File.readlines('/tmp/blah.cfg').map do |line|
  line.split(',', 2).map(&:strip)
end.to_h
#⇒ {"server1"=>"jim, 22", "server2"=>"bob, 44"}

有人可能会将其余部分拆分为数组:

File.readlines('/tmp/blah.cfg').map do |line|
  k, *v = line.split(',').map(&:strip)
  [k, v]
end.to_h
#⇒ {"server1"=>["jim", "22"], "server2"=>["bob", "44"]}