Project

General

Profile

Actions

Feature #10316

closed

Failsafe CSV.foreach

Added by tramuntanal (Oliver Valls) over 9 years ago. Updated about 6 years ago.

Status:
Rejected
Target version:
-
[ruby-core:65369]

Description

I've been looking for a CSV.foreach equivalent which either

  • ignores malformed CSV rows
  • or returns a nil row or a row with a parsed success flag.

Can I collaborate to develop this functionallity? Symply sending a patch here?

Updated by hsbt (Hiroshi SHIBATA) over 6 years ago

  • Assignee deleted (nobu (Nobuyoshi Nakada))
Actions #2

Updated by naruse (Yui NARUSE) over 6 years ago

  • Target version deleted (2.2.0)

Updated by hsbt (Hiroshi SHIBATA) about 6 years ago

  • Status changed from Open to Assigned
  • Assignee set to kou (Kouhei Sutou)

Updated by kou (Kouhei Sutou) about 6 years ago

  • Status changed from Assigned to Rejected

You can implement it with the following code:

CSV.open(path) do |csv|
  loop do
    begin
      row = csv.shift
    rescue ArgumentError # For old csv library
      # ignore
    rescue CSV::MalformedCSVError # For the latest csv library (not released yet)
      # ignore
    else
      # Do what you want with "row"
    end
  end
end

See also: https://github.com/ruby/csv/issues/25

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0