Чтение списков из файла в Ruby - PullRequest
0 голосов
/ 22 марта 2010

У меня есть текстовый файл, который содержит данные в следующем формате:

X1 Y1

X2 Y2

и т. Д.

Я хочупрочитайте данные из этого файла и создайте два списка в ruby ​​(X, содержащий X1, X2 и Y, содержащий Y1, Y2).Как я могу сделать это в Ruby?

Спасибо.

Ответы [ 4 ]

8 голосов
/ 22 марта 2010

Настоящий однострочный:

x, y = File.foreach("filename").collect {|line| line.split}.transpose
3 голосов
/ 22 марта 2010

псевдокод

File.new("source.txt", "r").each_line do |line|
  x, y = line.split
  xs << x
  ys << y
end

Возможно, вы захотите проверить Rdoc для подробного API.

2 голосов
/ 22 марта 2010

Я предпочитаю использовать метод readlines для таких вещей, как этот.

x = []
y = []
File.readlines(filename).each do |line|
  x << line.split[0]
  y << line.split[1]
end

Как предполагает Младен (из комментариев к этому ответу), я делю его дважды, что, вероятно, медленнее, чем присвоение переменной и ссылка на нее. Он также упоминает, что использование foreach лучше, чем readlines, и я согласен. Используя их советы, мы оба так и сделаем:

x = []
y = []
File.foreach(filename).each do |line|
  line = line.split
  x << line[0]
  y << line[1]
end
0 голосов
/ 22 марта 2010

Примерно так, если у вас ровно два столбца:

one = Array.new
two = Array.new

File.open("filename") do |file|
   while line = file.gets
     one << line.split[0]
     two << line.split[1]
  end
end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...