2010-03-22 161 views
0

文件讀取列表我有一個包含數據按以下格式的TXT文件:從紅寶石

X1 Y1

X2 Y2

等。

我想讀來自該文件的數據並在ruby中創建兩個列表(X包含X1,X2和Y,包含Y1,Y2)。我如何在Ruby中做到這一點?

謝謝。

回答

2

我更喜歡使用readlines方法來處理這類事情。

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

至於姆拉登(從這個答案的評論)所暗示的,我分裂它曾兩次可能比它賦值給一個變量,且引用該慢。他還提到使用foreachreadlines好,我同意。用他們的意見,這是我們兩個都會去這樣做:

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

+1 - 很乾淨 – RubyDubee

+1

你可以使用'File.foreach(文件名) '而不是'File.readlines(filename).each'並避免將整個文件加載到內存中。你也做'split()'兩次,這是沒有必要的。 –

+0

非常真實的Mladen,你也可以分配一個變量並使用它。 –

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 
3

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

您可能要籤詳細的API的RDoc。

8

一個真正的一行:

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