Попытка добавить содержимое файла .dat в 2d массив в ruby. - PullRequest
0 голосов
/ 23 ноября 2011

Я пытаюсь прочитать этот .dat файл и затем добавить содержимое в 2d массив.

Sean 20000.0 5000.0
John 60000.0 5000.0
Patricia 50000.0 7000.0
Lucy 80000.0 4000.0
Marie 34000.0 6800.0
Michael 42000.0 3000.0
Aoife 22000.0 5000.0
Barry 10000.0 4000.0
Angela 65000.0 6000.0
Luke 35000.0 4000.0
Ciara 8000 5000
Sean 200000.0 5000.0

Это код, который у меня есть, но он выдает ошибку в методе gets.

class Taxpayer

  def initialize filename
    @input = IO.readlines(filename)
    @info=[]
    end

  def set_up
   size = @input.length

    i = 0
    while i < size
        @info << (@input.gets).split(' ')
    end
  end
end

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Каждый элемент вашего массива @input является строкой, поэтому, если вы хотите сохранить каждую строку в виде массива, вам нужно извлечь каждую строку из @input, разбить их по пробелам, а затем сохранить этот массив как новый элемент.из @info, как это:

@input.each do |x|
    row = x.split
    @info << row
end

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

0 голосов
/ 23 ноября 2011

Я рекомендую вам использовать библиотеку csv от ruby.Просто укажите :col_sep как пустое в опциях

CSV.foreach(path, 'r', :col_sep => ' ') do |row|
  ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...