循环文本文件与部分

时间:2013-03-03 16:58:45

标签: ruby loops text each

我有一个大约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行时,我宁愿自动完成它。

3 个答案:

答案 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
-----