2016-04-30 28 views
0

私はこのようになりますCSVファイルを持っています。CSVでは、列名をループしてヘッダー行の位置を取得するにはどうすればよいですか?私は私のRubyスクリプトで<code>require</code> D <code>csv</code>をしました</p> <pre><code>ID,Name,Age 1,John,99 </code></pre> <p>:

CSVを使用して、ヘッダー行をループするにはどうすればよいですか? IDNameAgeのポジション番号はどのようにして得られますか?

+1

あなたがpostition' 'によって何を意味するかについて、もう少し明確にしてくださいすることができます – Alfie

+0

@Alfie IDが0、名前が1、年齢が2であることをスクリプトに表示させたい。配列のように。 – Username

+0

'row [0]'、 'row [1]'、 'row [2]' ...? – spickermann

答えて

1

ファイルx.csvにデータをコピーした後、私はIRBに次のように実行:

2.3.0 :009 > require 'csv' 
=> false 
2.3.0 :010 > csv = CSV.read 'x.csv' 
=> [["ID", "Name", "Age"], ["1", "John", "99"]] 
2.3.0 :010 > csv = CSV.read 'x.csv' 
=> [["ID", "Name", "Age"], ["1", "John", "99"]] 
2.3.0 :011 > header_line = csv[0] 
=> ["ID", "Name", "Age"] 
2.3.0 :012 > header_line[0] 
=> "ID" 
2.3.0 :013 > header_line[1] 
=> "Name" 
2.3.0 :014 > header_line[2] 
=> "Age" 

...ので、これはあなたがそれを行うことができます一つの方法です。 readを使用して配列の配列を取得し、最初の配列が列見出しの配列であると仮定します。現実の世界では

あなたはおそらく一度にメモリにファイル全体を読みたくないだろうとCSV.foreachを使用します。

#!/usr/bin/env ruby 

data = [] 
CSV.foreach('x.csv') do |values_in_row| 
    if @column_names # column names already read; this must be a data line 
    data << values_in_row # just an example 
    # do something with values_in_row 
    else 
    @column_names = values_in_row 
    end 
end 

puts "Column names are: #{@column_names.join(', ')}" 
puts "Data lines are:" 
puts data 
関連する問題

 関連する問題