昔のCSVはなんか悩みながら使った記憶があるけど、1.9からのCSVモジュールは素直で使いやすい。
今の仕事上、VB.netで書かなきゃいけないのかもしれないけど、
http://www.atmarkit.co.jp/fdotnet/dotnettips/487csvparser/csvparser.html
の csvparser.vb ってサンプルが
# coding: windows-31j require "csv" CSV.foreach("text.csv",{ :col_sep => ","}) do |row| puts row.map{|field| field.gsub(/\n/, "n").gsub(/\s/, "_")}.join("\t") end
で終わることを考えると、やる気がしない。
新しいCSVモジュールはヘッダ行を上手く扱ってくれる。しかし、ヘッダモードをONにしただけだと、
ヘッダをシンボルにしようとして日本語のヘッダだと悲しいことになる。
なので、
csv = CSV.read(filename, {headers:true, return_headers:true})
こんな感じにreturn_headersも指定するとよい。そうすると、ヘッダは文字列になる