在Ruby中打印带空字段的行

时间:2011-08-04 14:08:00

标签: ruby

假设我有一个以|作为分隔符的CSV文件。我知道如何阅读和打印内容,但我不确定如何打印Row 7 has an empty field。显示它是哪个字段会很好,但我现在关心的是先向我显示行,然后我可以尝试执行第二个任务。

require 'csv'
require 'pp'

CSV.open("exam.txt", 'r',"|") do |row|
  pp row
end

2 个答案:

答案 0 :(得分:2)

require 'csv'
require 'pp'

i = 0
CSV.open("exam.txt", 'r',"|") do |row|
  i += 1;
  pp row
  pp "Row " << i.to_s << " has an empty field" if row.include?(nil)
end

您可以使用row.index(nil)之类的内容查找nil字段。阅读EnumerableArray文档,您可能会发现一些内容。

答案 1 :(得分:1)

由于CSV库包含Ruby的Enumerable模块,因此您可以使用Enumerable's each_with_index方法。请记住,索引是从0开始的。

CSV.open("exam.txt", "r", "|").each_with_index do |row, index|
  pp row
  # If it's blank:
  pp "Row #{index + 1} has an empty field"
end