文件讀取列表我有一個包含數據按以下格式的TXT文件:從紅寶石
X1 Y1
X2 Y2
等。
我想讀來自該文件的數據並在ruby中創建兩個列表(X包含X1,X2和Y,包含Y1,Y2)。我如何在Ruby中做到這一點?
謝謝。
文件讀取列表我有一個包含數據按以下格式的TXT文件:從紅寶石
X1 Y1
X2 Y2
等。
我想讀來自該文件的數據並在ruby中創建兩個列表(X包含X1,X2和Y,包含Y1,Y2)。我如何在Ruby中做到這一點?
謝謝。
我更喜歡使用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
事情是這樣的,如果你恰好有兩列:
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
僞
File.new("source.txt", "r").each_line do |line|
x, y = line.split
xs << x
ys << y
end
您可能要籤詳細的API的RDoc。
一個真正的一行:
x, y = File.foreach("filename").collect {|line| line.split}.transpose
+1 - 很乾淨 – RubyDubee
你可以使用'File.foreach(文件名) '而不是'File.readlines(filename).each'並避免將整個文件加載到內存中。你也做'split()'兩次,這是沒有必要的。 –
非常真實的Mladen,你也可以分配一個變量並使用它。 –