Rubyを使ってcsvファイルを処理する
Rubyを使ってファイル処理をしたい。と思ったので一連の流れを実装。
簡単なソースではありますが、個人的には配列の基本に立ち返れたので良い機会になりました。
やること
CSVファイルを取り込んで、降順にソートします。
実装
以下スクリプト。
class Address def initialize buf = Array.new #バッファするための配列を宣言 open("address.csv","r") do |file| file.each_line do |s| buf << s.chomp #改行文字\nを取り除きつつbufに値を格納 @s = buf #できあがった配列をインスタンス変数に格納 end end end def sort #降順に並べ替える @s.sort! do |one,another| one = one.split(',') another = another.split(',') one[2] <=> another[2] end end end address = Address.new puts address.sort
取り込んだaddress.csvは以下の通り。
01,he,133 02,yo,155 03,ho,143
実装結果は以下の通り。
01,he,133 03,ho,143 02,yo,155
まとめ
ファイルの内容を1行づつ行った場合、bufのような配列に格納しないとあきまへんし、s.chompのように改行文字を除外しておくことが肝要です(恐ろしく基本的ですが)。
Javaを社員研修で触れて数年、まだまだプログラミングの基本を学ばないと。