2013-03-03 175 views
0

我有一個約有11000行的文件。它的建立是這樣的:通過文本文件循環部分

some info 1 
some cool info 1 
some other info 1 
foo bar 1 


some info 2 
some cool info 2 
some other info 2 
foo bar 2 

我想建立一個循環都要經過這一點,不喜歡:

data1 = line1 
data2 = line2 
data3 = line3 
data4 = line4 
# do stuff with the data 1,2,3,4 
data1 = line7 
data2 = line8 
data3 = line9 
data4 = line10 
# do stuff with the data 1,2,3,4 

,並在文本文件中的所有東西,做到這一點。任何人有任何想法?對於十條線來說,手動操作很不錯,但是當它大約有11000條線時,我寧願自動完成。

回答

0
File.open('/tmp/lines', 'r').each_slice(6) do |group| 
    # remove newlines 
    group.map! {|item| item.chomp } 

    data1, data2, data3, data4 = group 

    # do something with the variables... 
end 
+0

謝謝。這正是我正在尋找的。 – qwerty1911 2013-03-03 17:28:15

0

在您的File對象上使用each_slice可以完美地完成這項工作。這並不需要空行考慮,雖然,但有一個很不錯的技巧來處理,在對方的回答

0
input = <<-EOF 
some info 1 
some cool info 1 
some other info 1 
foo bar 1 



some info 2 
some cool info 2 
some other info 2 
foo bar 2 
EOF 

input.lines.reject(&:empty?).each_slice(4) do |data| 
    puts data[0] 
    puts data[1] 
    puts data[2] 
    puts data[3] 
    puts '-----' 
end 

輸出:

some info 1 
some cool info 1 
some other info 1 
foo bar 1 
----- 
some info 2 
some cool info 2 
some other info 2 
foo bar 2 
-----