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

【Ruby3.x】CSV::Parser::Scanner::each_line()メソッドの使い方

each_lineメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

each_lineメソッドは、RubyのCSV::Parser::Scannerクラスに属し、入力されたCSVデータを一行ずつ処理するために使用されるメソッドです。

このメソッドは、CSV::Parser::Scannerが読み込んでいるCSV形式の文字列やファイルなどのデータソースから、CSVの書式規則(区切り文字、引用符など)に従って一行分のデータを正確に抽出し、その抽出した行データを引数として与えられたブロックに渡して実行します。データソースの終わりまで、または処理が中断されるまで、この行ごとの処理を繰り返します。

例えば、大量のCSVデータファイルがある場合に、ファイルを一度にすべてメモリに読み込むことなく、一行ずつ順に読み込みながら特定の処理(データの検証、変換、データベースへの挿入など)を行いたい場合に非常に役立ちます。開発者は、CSVの複雑な解析ロジックを自分で実装することなく、簡単に効率的な行単位での繰り返し処理を記述できます。

CSV::Parser::Scannerは、Rubyの標準ライブラリであるCSVライブラリがCSVデータをより低レベルで柔軟に解析するための基盤となるコンポーネントであり、each_lineメソッドはその解析プロセスを細かく制御し、効率的なデータ処理を可能にするための重要な機能の一つです。

構文(syntax)

1require 'csv'
2
3scanner = CSV::Parser::Scanner.new("header1,header2\nvalue1,value2", col_sep: ',')
4scanner.each_line do |line|
5  puts line
6end

引数(parameters)

line_buffer, rs

  • line_buffer: 読み込む行を一時的に保持するバッファ
  • rs: 行の区切り文字

戻り値(return)

self

CSV::Parser::Scanner#each_line メソッドは、自身(self)を返します。このメソッドは、CSVデータの各行を順に処理するためのイテレータとして機能します。

関連コンテンツ