2011-08-04 2 views
2

|を区切り文字とするCSVファイルがあるとします。私はどのように内容を読んで、印刷するのかは分かっていますが、印刷方法についてはわかりませんRow 7 has an empty field。それはどのフィールドであるかを示すことはうれしいですが、私の懸念は今私に行を最初に示すことであり、私は第2のタスクをやろうとすることができます。Rubyで空欄の行を印刷する

require 'csv' 
require 'pp' 

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

答えて

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 

あなたはnilフィールドを見つけることrow.index(nil)のようなものを使用することができます。 EnumerableArrayのドキュメントを読むと、おそらく何かが見つかります。

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 
関連する問題