2012-04-19 24 views
2

入力ファイルは次のようになります。Rubyを使用してcsvを配列に変換するにはどうすればよいですか?

 
dog,white,male 
cat,purple,female 
rat,gray,male 

と私は通過し、そのデータで物事を行う、ラインごとにしたいです。

File.open("animals.csv") 
    while file has next line 
    currentline = array with each cell being an entry in the array 
    if currentline[0] == dog 
     put "dogs are cool" 
    end 
    put "your animal is a " + currentline[0] 
    end 

あなたは正しいアイデアを得ていますか?私は、ifsとそれ以外のものでデータ行を操作し、最後にすべてを出力したい。

おかげ

答えて

-1

ブロックの魔法を使って、ライン読み取りコードをきれいにすることができます。以下のコードはあなたのためにあなたのハンドルを閉じて、あまりにも多くの余分なバッファリングせずに一度に1つずつ各行を取得します。

IO.foreach("animals.csv") do |line| 
    parts = line.split(',') 
    ... 
end 

としては、CSVライブラリがあり注意が、あなたのデータが複雑でない場合は、埋め込まれたカンマとwhatenotを持っていない、上記のは合理的です。

また、dogという名前の変数ではなく、文字列 "dog"と比較したいとします。文字列を引用符で囲むには、ルビはその変数かメソッド呼び出しかと考えます。

if currentline[0] == "dog" 
+0

なぜ車輪の再発明?あなたはCSVクラスを持っています。 "あなたのデータが複雑でない場合"は正当な理由ではない、IMO。 – St0rM

2
require 'csv' 
CSV.foreach("animals.csv") do |row| 
    puts 'dogs are cool' if row[0] == 'dog' 
    puts "your animal is a #{row[0]}" 
end 
関連する問題