Overcoming a basic problem with CSV parsing using the FasterCSV gem

fastercsv, ruby

Solution

The `MalformedCSVError` is correct here.

Leading/trailing spaces in CSV format are not ignored, they are considered part of a field. So this means you have started a field with a space, and then included unescaped double quotes in that field, which would cause the illegal quoting error.

Maybe this library is just more strict than others you have used.

Problem

I have found a CSV parsing issue with FasterCSV (1.5.0) which seems like a genuine bug, but which I'm hoping there's a workaround for. Basically, adding a space after the separator (in my case a comma) when the fields are enclosed in quotes generates a `MalformedCSVError`. Here's a simple example: ``` # No quotes on fields -- works fine FasterCSV.parse_line("one,two,three") => ["one", "two", "three"] # Quotes around fields with no spaces after separators -- works fine FasterCSV.parse_line("\"one\",\"two\",\"three\"") => ["one", "two", "three"] # Quotes around fields but with a space after the first separator -- fails! FasterCSV.parse_line("\"one\", \"two\",\"three\"") => FasterCSV::MalformedCSVError: Illegal quoting on line 1. ``` Am I going mad, or is this a bug in FasterCSV?

Original source