从Ruby中的文件中读取列表

时间:2010-03-22 07:43:14

标签: ruby file list

我有一个txt文件,其中包含以下格式的数据:

X1 Y1

X2 Y2

等。

我想从这个文件中读取数据并在ruby中创建两个列表(X包含X1,X2和Y,包含Y1,Y2)。我怎么能在Ruby中做到这一点?

感谢。

4 个答案:

答案 0 :(得分:8)

真正的单行:

x, y = File.foreach("filename").collect {|line| line.split}.transpose

答案 1 :(得分:3)

伪代码

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

您可能需要检查Rdoc for detail API。

答案 2 :(得分:2)

我更喜欢使用readlines方法来解决这个问题。

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

正如Mladen(来自这个答案的评论)所暗示的那样,我将它拆分两次,这可能比将其分配给变量并引用它更慢。他还提到使用foreach优于readlines,我同意。根据他们的建议,这就是我们如何做到这一点:

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

答案 3 :(得分:0)

如果你只有两列,那就是这样:

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