【Ruby3.x】CSV::Table::delete_if()メソッドの使い方
delete_ifメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
delete_ifメソッドは、CSVデータを表形式で扱うCSV::Tableクラスに属し、そのテーブルから特定の条件に合致する行を削除するメソッドです。このメソッドは、引数としてブロックと呼ばれるコードのまとまりを受け取ります。メソッドが実行されると、CSV::Table内の各行が順番にそのブロックに渡されます。ブロック内で渡された行に対して評価を行い、その結果が真(true)と判断された場合、該当する行はテーブルから削除されます。この操作は元のCSV::Tableオブジェクトの内容を直接変更(破壊的な変更)しますので、利用時には注意が必要です。例えば、CSVデータから特定のIDを持つ行や、値が空の行を一括で除去したい場合に非常に有効です。もしブロックが与えられなかった場合、delete_ifメソッドはテーブルの各行をブロックに渡す代わりに、Enumeratorと呼ばれるオブジェクトを返します。これにより、後から削除条件を柔軟に指定して処理を継続することが可能です。システム開発において、CSVデータのクレンジングやフィルタリング処理を行う際に、効率的かつ簡潔に不要なデータを削除するために活用されます。
構文(syntax)
1require 'csv' 2 3csv_data = <<~CSV 4header1,header2 5data1a,data1b 6data2a,data2b 7data3a,data3b 8CSV 9 10table = CSV.parse(csv_data, headers: true) 11 12table.delete_if do |row| 13 row['header1'] == 'data2a' 14end
引数(parameters)
引数なし
引数はありません
戻り値(return)
self または Enumerator
CSV::Table#delete_ifは、条件に合致する行を削除したCSV::Tableオブジェクト自身を返します。ただし、ブロックが省略された場合は、削除処理を行うためのEnumeratorを返します。