在使用Ruby解析文本文件时如何跳过某些列?

时间:2009-02-03 19:40:41

标签: ruby

我必须用Ruby解析制表符分隔的文本文件,以从中提取一些数据。由于某些未知的原因,一些列没有使用,只是基本上是间隔物;我想忽略这些列,因为我不需要它们的输出(但是我不能忽略所有空列,因为一些合法的列具有空值)。我已经知道这些列的索引(例如第6,14,24和38列)。

虽然我可以在解析文件时添加一个条件,并说解析它,除非它是其中一个列,这似乎不是“Rubyish” - 是否有更好,更优雅的方法来处理它? RegExps,也许?我想做[6, 14, 24, 38].each { |x| columns.delete_at(x) }这样的事情来删除未使用的列,但这会迫使我重新确定我实际需要的列的索引。我真正想要做的就是遍历整个事情,检查当前列的索引,如果它是“坏”列之一,则忽略它。但是,使用像unless x == 6 || x == 14 || x == 24 || x == 38

这样的代码似乎非常难看

1 个答案:

答案 0 :(得分:7)

不需要像这样的大规模条件。

bad_cols = [6, 14, 24, 38]
columns.each_with_index do |val,idx|
  next if bad_cols.include? idx
  #process the data
end