CSVを結合して処理できるcsv_combineをリリースしました
複数の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も使用できますよ。