大量のデータを含むruby CSV.readを使用しています。例えば随時ライブラリ出会い不十分フォーマットされたライン、:CSV.read不正な行xの引用
"Illegal quoting in line 53657."
各CSVファイルを通過し、書式設定を修正し、その後、ラインを無視して、それをスキップするために容易になるだろう。これどうやってするの?
大量のデータを含むruby CSV.readを使用しています。例えば随時ライブラリ出会い不十分フォーマットされたライン、:CSV.read不正な行xの引用
"Illegal quoting in line 53657."
各CSVファイルを通過し、書式設定を修正し、その後、ラインを無視して、それをスキップするために容易になるだろう。これどうやってするの?
私はこの問題は、彼らが表示される場合はCSVパーサが完全にコンマ区切りのテキストを囲むように、"
を期待している123,456,a"b"c
のような行でこの問題がありました。
ソリューションは、私は私のデータに表示されないだろうと確信していた"
以外に引用符文字を使用します。
CSV.read(filename, :quote_char => "|")
CSVにファイルの読み取りと解析の両方をさせません。
自分でファイルを読んで、CSV.parse_line
に各行を渡してから、rescue
に例外をスローします。
liberal_parsing
オプションは、このような場合のためのRuby 2.4以降で利用可能です。
trueに設定すると、引用符で囲まれていないフィールドの二重引用符など、RFC 4180に準拠していない入力を解析しようとします。
/パース/新しいメソッド読みCSVへのオプションとして渡し、それを有効にするには:彼は、特に大量のデータを持っており、ちょうどエラーをスキップしたい要求者の状況では
CSV.read(filename, liberal_parsing: true)
を。変更:quote_charは私の状況で私を助けてくれました。 –
これは私の状況でもうまくいきましたが、エラーなしで100以上のCSVデータを処理しました – DataHerder
2015年も同様に続きます:) ありがとうございました。私はここに到達するのに数時間かかりました:) – Suraj