我有一个txt文件,其中包含以下格式的数据:
X1 Y1
X2 Y2
等。
我想从这个文件中读取数据并在ruby中创建两个列表(X包含X1,X2和Y,包含Y1,Y2)。我怎么能在Ruby中做到这一点?
感谢。
答案 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