テーブルのデータを次のようにハッシュで記述するのは面倒だ。
table = [ {:name => 'Ken', :age => 24}, {:name => 'Mary', :age => 20}, {:name => 'John', :age => 31}, {:name => 'Mary Ann', :age => 3}] そこで、 Ken, 24 Mary, 20 John, 31 Mary Ann, 3 のようなテキストファイルからテーブルのハッシュの配列をつくるメソッドを作ってみた。 def read(path) IO.read(path). split(/\n/). collect{|x| x.split(/,/)}. collect{|x| {:name => x[0], :age => x[1].to_i} } end これを使って、irb 上で irb> table = read('names.txt') とすると table に目的のハッシュの配列が取り込まれるので、前回でやったようないろいろな処理がインタラクティブにできる。 ハッシュの配列ではなくてただの2次元配列でよければ、 table = IO.read('names.txt').split(/\n/).collect{|x| x.split(/,/)} で、一行で済んでしまう。 あるいは、Ruby 標準の CSV クラスを利用して、 require 'csv' table = CSV.read('names.txt') で読み込んでもよい。 また、各行がハッシュの方が良ければ、 table = [] CSV.foreach('names.txt'){|x| table.push({:name =>x[0], :age => x[1].to_i})} とすることもできる。 いずれにせよ、個人的なデータの処理に Ruby を使うときは、データ数もそう多くはないし、やりたいのはデータ処理なのだから、プログラムはあまりデータの邪魔をしない方がいい。また、irb などを使って、対話的にすぐ結果が出る方がうれしい。
by tnomura9
| 2008-09-09 22:18
| Ruby
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||