Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

[Ruby]新しいCSVモジュールが良くできてる

昔の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も指定するとよい。そうすると、ヘッダは文字列になる