Techioz Blog

Ruby での CSV からの解析 [終了]

概要

ヘッダーのない CSV ファイルから行を取得しようとしています。

require "csv"

filepath = "data/beatles.csv"
csv_options = { col_sep: ',', quote_char: '"', headers: :first_row }

CSV.foreach(filepath, csv_options) do |row|
   puts row[0]
end

そして、私はいつもこのエラーを受け取りました:

解決策

CSV::foreach は、 path_or_io 引数の後にオプションの名前付き引数を期待します。ハッシュ オブジェクトを渡そうとしています。ハッシュを名前付き引数のリストに展開するように Ruby に依頼する必要があります。これはダブルスプラットで行われます。

csv_options = { col_sep: ',', quote_char: '"', headers: :first_row }

CSV.foreach(filepath, **csv_options) do |row|
  # whatever
end

実際に対処する必要があるものに一致するように csv_options を適切に修正します。たとえば、質問に記載されているようにヘッダーがない場合は、ヘッダーを指定しないでください。