0

CSV ファイルからデータを取得して他の場所で使用する方法を理解するのに少し苦労しています。

私のコードは現在のみです:

CSV.foreach("../../lib/modules/csv.csv") do |row|
    # use row here...

    def initialize(headers, fields, header_row = false)  
  end
end  

Rubyのドキュメントから実際に拾うことができたのはこれだけです。ヘッダーを選択してそのヘッダーの下のセルを取得する方法の例はないようです?

これを十分に説明していない場合は、テーブルの例の簡単なモックアップを次に示します。

 title  |  description  |  priority 
----------------------------------   
 story1 |    example1   |     6
----------------------------------     
 story2 |    example2   |     7
----------------------------------  
 story3 |    example3   |     8
----------------------------------  

データを文字列に格納するにはどうすればよいですか?:

example = column[i]
4

2 に答える 2

1

行から値を取得する場合、インデックスごとに値を取得できます(Ashishで示されています)。ヘッダーの説明に基づいて取得することもできます。これは、必要に応じて聞こえます。

次の例は、「description」列のすべての値の配列を作成する方法を示しています。

all_descriptions = Array.new
CSV.foreach("test.csv", :headers=>true, :header_converters=>:symbol) do |row|
    all_descriptions << row[:description]
end  
all_descriptions
#=> ['example1', 'example2', 'example3']

ご覧のとおり、を使用して各行の説明値を取得できますrow[:description]。ここ:descriptionで、は列見出しが記号に変換されています。

後でループで使用するために値を保存する場合は、次のようになります。

CSV.foreach("test.csv", :headers=>true, :header_converters=>:symbol) do |row|
    example = row[:description]
    #do stuff
    if example =~ /something/
      #do other stuff
    end
end 
于 2012-10-09T13:30:18.173 に答える
1

行変数のインデックスを使用して、個々のセルにアクセスできます。

CSV.foreach("../../lib/modules/csv.csv", headers: true) {|row| puts "#{row[0]} - #{row[1]} #{row[2]}" }

設定するとheaders:true、それぞれrowがのインスタンスにCSV::Rowなり、csv の最初の行がヘッダー行として扱われます。出力します

story1 - example1 - 6
story2 - example2 - 7
story3 - example3 - 8 

ただし、headers:falseそれぞれrowがのインスタンスであるArrayと設定すると、出力されます-

title - description - priority
story1 - example1 - 6
story2 - example2 - 7
story3 - example3 - 8
于 2012-10-08T14:25:21.640 に答える