Использование Ruby, чтение файла, содержащего пары имя / значение в хеш - PullRequest
9 голосов
/ 08 ноября 2010

У меня есть файл с парой имя / значение в каждой строке, я хочу открыть файл, прочитать каждую строку и инициализировать хэш.

file:

john, 234
joe, 2222

И загрузите хеш, чтобы я мог перебирать пары ключ-значение.

Ответы [ 4 ]

19 голосов
/ 08 ноября 2010
Hash[*File.read('f.txt').split(/[, \n]+/)]
9 голосов
/ 08 ноября 2010
Hash[File.read('some.txt').split("\n").map{|i|i.split(', ')}]

или

Hash[File.read('some.txt').scan(/(.+?), (.+)/)]
5 голосов
/ 08 ноября 2010
f = <<EOF
john, 234
joe, 2222
EOF

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

Метод #split дает массив, похожий на ["john", "234", "joe", "2222"].Оператор * (AKA splat) преобразует этот массив в набор аргументов.Hash # [] принимает эту кучу аргументов (при наличии четного числа аргументов) и доставляет хеш.

4 голосов
/ 08 ноября 2010
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

Возможно, вы захотите добавить некоторую проверку, но это простой способ выполнить то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...