非常相似的问题: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
接近这个的方法是什么?问题是哈希初始化的方式还是我的正则表达式?
答案 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"]}