概要
Rubyでcsvファイルを読み込んで新たに書き出せるようにしたかった。
Gemを利用しても実装できるが、あえてRubyのみで実装した。
手順
1.テストデータの取得
テスト用に郵便番号データの「東京」のcsvファイルでテストします。
◇郵便番号データ
2.使用するライブラリ
CSV形式ファイルを使うには、標準ライブラリcsvを利用するのが便利です。
◇csvライブラリ
https://docs.ruby-lang.org/ja/latest/library/csv.html
今回、使用する13TOKYO.csv
はShift-JISでエンコードされているため、その後の処理で不都合があるかもしれないので、Shift-JIS
からUTF-8
に変更します。
◇kconvライブラリ
https://docs.ruby-lang.org/ja/latest/library/kconv.html
csvファイルを読み込んで別のcsvファイルへ書き出すコード
require 'csv'
require 'kconv'
row_o = Array.new
# 東京の郵便番号データを読み出し
# Shift-JISからUTF-8に変換しています。
# 配列に小笠原村が含まれる情報のみ抜き出しています。
open('13TOKYO.csv').each do |row|
row = CSV.parse_line(Kconv::kconv(row, Kconv::UTF8, Kconv::SJIS))
if row.include?('小笠原村')
row_o << row.compact
end
end
# output.csvに読み出した情報を書き出しています。
CSV.open('output.csv', 'w') do |write|
row_o.each do |i|
write << i
end
end
書き出したCSV
まとめ
RailsのGemではなくRubyの標準ライブラリで実装できた。
include?
の中を変数にすれば色々と対応できそう。