RubyのCSV読み込みエラー対処法

RubyのCSVクラスは、ファイル末尾に改行文字(\n, \r\nなど)が付いていると、読み込み時に”Unquoted fields do not allow \r or \n”エラーとなり停止することがあります。

エラーメッセージと原因の対応を読み取りづらいため分かりにくいエラーの1つですが、テキストエディタなどでファイルを確認して最後に空行がついている場合はこの可能性を疑います。

末尾改行コードがつく原因が別のアプリケーションによるものである場合は、読み込み前に取り除く処理が必要になります。

また、このファイルが自分のRubyコードで生成したものである場合、書き込み時の処理部分を確認します。File.putsで書き込んだ場合、改行コードつきで出力されます。

このケースでは、File.printで書き込むよう変更することで改行コードなしで出力できます。

中馬崇尋
Chuma Takahiro