LoginSignup
1
1

More than 1 year has passed since last update.

【Ruby】RubyでCSV形式のデータを読みこみや書きこみをしたい時

Posted at

概要

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

output_csv.png

まとめ

RailsのGemではなくRubyの標準ライブラリで実装できた。
include?の中を変数にすれば色々と対応できそう。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1