普段雑務でcsvの各値を集計したり計算したりするっていうのを
定常的に行っているのでrubyでスクリプト化してみた。
書いてみた
こんな感じでcsvファイルを順に読込み
カンマでsplitして、ダブルクォーテションをsubで置換して、と。
Dir.glob("*.csv") do |file_name| (一部略) file = open(file_name, "r") file.gets file.each do |f| vals = f.split(',') f1 += vals[1].sub(/^\"/,"").sub(/\"$/,"").to_f (一部略)
csvパーサーが付いていた
どうも、sub置換とか面倒なのでパーサーって無いのかと調べたら
標準であった。
簡単やん。
require 'csv' CSV.open('in.csv', 'r') do |row| p row end
fastercsvを使ってみた
でも遅いらしいのでfastercsvをインストール。
Rubyの標準添付CSVパーサーが遅い - 技術メモ帳
こっちも簡単。
require 'rubygems' require 'fastercsv' FasterCSV.foreach('in.csv') do |row| p row end