ruby で書式が決まっているテキストファイルを読む
「パターンマッチング」を使う方法。以下のサイトを参照:
Dennou-Ruby Tutorial
の「テキストデータを読んで図を描く」のところ
逆引きRuby - ファイルアクセス
(「1 行ずつ読み込みを行う」の所のアンカーに飛びます)
要するに、
line = file.gets
という感じでファイルを一行読んで
line =~ /^(\d{3}) (\d{3})$/
とパターンマッチングさせると、$1, $2 変数に, 正規表現(/ と / の間) に該当する部分の文字が読まれる、という感じ。ちょっとやってみないと難しいのですが…。
たとえば irb でやってみるとこんな感じ (ファイルを読むとか関係なしに):
irb(main):004:0> string = "543392" => "543392" irb(main):007:0> string =~ /^(\d{3})(\d{3})$/ => 0 irb(main):008:0> $1 => "543" irb(main):009:0> $2 => "392" irb(main):010:0> string = "375 564" => "375 564" irb(main):011:0> string =~ /^(\d{3}) (\d{3})$/ => 0 irb(main):013:0> [$1, $2] => ["375", "564"]
ただ、大抵の場合はスペース区切りもしくはカンマ区切りの素直なテキストデータで、
arr = line.split( " " )
的なことをすれば済むんですけどね。古い地球科学分野のデータとかはこういう訳にはいかない。昔は余計なスペースやカンマがもったいなかったんですよね。データ容量的に