定期的にCSV形式のログをメールで送信するiPhoneアプリを使用しています。私は古いログとそのログのデータを合計するルビースクリプトを持っています。最近、アプリ開発者は、未知の理由により、各行の末尾に改行が追加され、スクリプトが失敗するという更新をリリースしました。ドキュメントによると、デフォルトで:row_end
は:auto
であり、\r\n
または\n
(1.9.2)のいずれかを受け入れる必要があります。私は1.8.7でRuby 1.8.7,1.9.2、FasterCSVを使ってみました。私は Ruby CSVが行末として r nを理解していません
CSV::IllegalFormatError
-
を含め、これらの異なる試行でさまざまなエラーメッセージを取得
NilClass
(TypeError例外)をDUPすることはできません
\r
か
\n
(ライン1)(
FasterCSV::MalformedCSVError
)
1.9.2。 (\r
は、フィールドで、それはラインの終わりだではありません!)のデータは、以前はこのように見えた:CSVを考えることができることを考える
03-12-2012 07:59,120.0,^M
03-11-2012 08:27,120.0,^M
03-10-2012 07:57,120.0,^M
:
03-12-2012 07:59,120.0,
03-11-2012 08:27,120.0,
03-10-2012 07:57,120.0,
は、今ではこのようになります^M
が最後のフィールドにあるので、別のカンマを追加しようとしました:
03-12-2012 07:59,120.0,,^M
私が想像できる唯一のことは、CSVではすべてのフィールドを二重引用符で囲む必要があることです。 最初にファイルを読み込み、最後をコンパイルしてからCSVで配列を処理するなど、さまざまな回避策が考えられますが、最初に間違っていることを見つけたいと思います。それはうまくいくようです。
CSV.foreach(File.join($import_dir, file)) do |record|
と私は無駄に:row_end => "\r\n"
を設定しようとしました:私のコードは単純ですところで
。
私はMac OS X 10.6.8です。
チップをありがとう。 odでファイルを見ることを考えなかった。 \ r \ r \ nで行末を表示します。 – chetstone