我有一个大约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
并为文本文件中的所有内容执行此操作。有人有什么想法吗?这可以手动完成10行,但是当它大约11000行时,我宁愿自动完成它。
答案 0 :(得分:0)
在File
对象上使用each_slice可以完美地完成工作。尽管如此,这并不考虑空行,但在另一个答案
答案 1 :(得分: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
答案 2 :(得分: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
-----