Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【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を返します。

関連コンテンツ