【Ruby3.x】CSV::Table::delete()メソッドの使い方
deleteメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
deleteメソッドは、CSV::Tableオブジェクトから特定の行を削除するメソッドです。CSV::Tableは、CSVファイルの内容をプログラム内で表形式のデータとして扱うための便利なクラスです。このdeleteメソッドを利用することで、CSV::Tableに格納されているデータから、不要な行を効率的に取り除くことができます。
このメソッドには主に二つの使い方があります。一つ目は、削除したい行のインデックス(位置)を数値で直接指定する方法です。例えば、table.delete(0)のように記述すると、テーブルの最初の行が削除されます。インデックスは0から始まるため、最初の行は0、次の行は1と数えます。
二つ目の使い方は、ブロック({ |row| ... })を渡す方法です。この方法では、テーブル内の各行がブロックに渡され、ブロック内で定義された条件式が真(true)を返したすべての行がテーブルから削除されます。例えば、「特定の列の値が空の行をすべて削除する」といった、より複雑な条件に基づいて行をフィルタリングし削除したい場合に非常に役立ちます。
deleteメソッドは、削除された行のデータ(CSV::Rowオブジェクト)を戻り値として返します。ただし、指定したインデックスの行が存在しない場合や、ブロックが真を返す行が一つもなかった場合は、状況に応じてnilなどが返されることがあります。このメソッドは、CSVデータの前処理や、特定の条件を満たすデータをクリーンアップする際に頻繁に利用されます。
構文(syntax)
1require 'csv' 2 3# CSV::Tableインスタンスを準備 4data = "col1,col2\nrow1val1,row1val2\nrow2val1,row2val2\nrow3val1,row3val2" 5table = CSV.parse(data, headers: true) 6 7# 指定されたインデックスの行をテーブルから削除 8table.delete(1)
引数(parameters)
index_or_header
- index_or_header: 削除したい行のインデックス(整数)またはヘッダー名(文字列)
戻り値(return)
CSV::Row または nil
指定されたキーを持つ行を CSV::Table から削除し、削除された CSV::Row オブジェクトを返します。該当する行が見つからなかった場合は nil を返します。