読者です 読者をやめる 読者になる 読者になる

CSVを結合して処理できるcsv_combineをリリースしました

ruby

複数のCSVを結合して処理することができるcsv_combineを作りました。
https://rubygems.org/gems/csv_combine
https://github.com/kazuhisa/csv_combine

セットアップ

Bundlerを使用していればGemfileに次の一文を追加します。

gem "csv_combine"

使い方

普通に使うとき

引数に結合したいファイルを指定して下さい。

reader = CsvCombine.open("file_a.csv","file_b.csv")
reader.each do |csv|
  puts csv
end

["name", "age", "instrument"]
["Yui Hirasawa", "17", "guitar"]
["Mio Akiyama", "17", "base"]
["Ritsu Tainaka", "17", "dram"]
["Tsumugi Kotobuki", "17", "keyboard"]
["name", "age", "instrument"]
["Azusa Nakano", "16", "guitar"]
["Mio Akiyama", "17", "base"]
ダブった行はスキップしたいとき

最初に出現した行が優先されます。

reader = CsvCombine.open("file_a.csv","file_b.csv",:uniq => true)
reader.each do |csv|
  puts csv
end

["name", "age", "instrument"]
["Yui Hirasawa", "17", "guitar"]
["Mio Akiyama", "17", "base"]
["Ritsu Tainaka", "17", "dram"]
["Tsumugi Kotobuki", "17", "keyboard"]
["Azusa Nakano", "16", "guitar"]
ヘッダーを取り除きたいファイルを指定
reader = CsvCombine.open("file_a.csv","file_b.csv",:skip_header_files => "file_b.csv")
reader.each do |csv|
  puts csv
end

["name", "age", "instrument"]
["Yui Hirasawa", "17", "guitar"]
["Mio Akiyama", "17", "base"]
["Ritsu Tainaka", "17", "dram"]
["Tsumugi Kotobuki", "17", "keyboard"]
["Azusa Nakano", "16", "guitar"]
["Mio Akiyama", "17", "base"]

もちろんEnumerableをincludeしてますので、mapやselectも使用できますよ。