Project

General

Profile

Actions

Feature #10316

closed

Failsafe CSV.foreach

Added by tramuntanal (Oliver Valls) over 7 years ago. Updated over 4 years ago.

Status:
Rejected
Priority:
Normal
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) almost 5 years ago

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

Updated by naruse (Yui NARUSE) over 4 years ago

  • Target version deleted (2.2.0)

Updated by hsbt (Hiroshi SHIBATA) over 4 years ago

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

Updated by kou (Kouhei Sutou) over 4 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