6

入力ファイルは次のようになります。

犬、白、オス
猫、紫、メス
ラット、グレー、オス

そして、そのデータを1行ずつ調べて処理したいと思います。

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などでデータ行を操作し、最後にすべて出力したい。

ありがとう

4

3 に答える 3

7
require 'csv'
CSV.foreach("animals.csv") do |row|
  puts 'dogs are cool' if row[0] == 'dog'
  puts "your animal is a #{row[0]}"
end
于 2012-04-19T20:47:19.103 に答える
2

Rubyには、CSVの解析と操作をさらに簡単にするCSVクラスが含まれています。チェックアウト:http ://www.ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html

于 2012-04-19T20:40:22.790 に答える
0

ブロックの魔法を使用して、コードを読み取る行をかなりクリーンアップできます。以下のコードは、ハンドルを閉じ、余分なバッファリングをあまり行わずに、一度に1行ずつ取得します。

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

前述のように、CSVライブラリがありますが、データが複雑でなく、カンマなどが埋め込まれていない場合は、上記が妥当です。

また、dogという名前の変数ではなく、文字列「dog」と比較したいことに注意してください。文字列を引用符で囲むようにするには、そうでない場合、rubyは変数またはメソッド呼び出しと見なします。

if currentline[0] == "dog"
于 2012-04-19T20:43:39.977 に答える