テクノロイド

コンピュータやゲーム他、色々日々思ったことをつづっていきます。

rubyでCSVファイルを扱う

2015-05-13 21:18:44 | Ruby, Rails,プログラミング
rubyでCSVファイルのデータ集計をやりたい。
グループ分けするのにDBにぶっ込んでSQLやれば簡単なんだが、ここ見てCSVライブラリに感動したんで挑戦中。
というかSQLも無しにベタな条件分岐でプログラム作ってれば、サクッと終わってた気もする。
あ~時間ないのに。というかこういう時に限って横道にそれちゃう悪いクセ。

んで、CSV.tablesすげえなと思って試したら、ヘッダ部分(CSVファイル1行目)に漢字が使われてたらシンボル化が失敗するようで全て:""になって使いものにならない。
ググると「漢字だったら使えないからreadメソッド使おう」みたいで、そうするtable[:"項目1"]みたいにできないのでは?と思い、何とか対処策発見。

tbl=CSV.table("test.csv", header_converters: nil)
ヘッダをシンボルへコンバートしない指定ができるじゃん。

これで次のようにやれば項目1でグループ化できる。
grp=table.group_by{|row| row["項目1"]}

でも標準のgroup_byじゃ簡単にはいかないようだ・・・

それと結局tableメソッドとreadメソッドは同じらしいし、漢字変換も必要なので
tbl=CSV.read("test.csv", headers: true, encoding: "EUC-JP:UTF-8")
にしたという・・・
コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« LXC内のXクライアントで漢字入力 | トップ | 続)LXCで外部からのアクセス »
最新の画像もっと見る

コメントを投稿

Ruby, Rails,プログラミング」カテゴリの最新記事