Forum: Ruby Q about the FasterCSV

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F1c441ba5569ec34d0613fe8c218e076?d=identicon&s=25 Eric Luo (Guest)
on 2006-04-27 05:40
(Received via mailing list)
Hi,

I have a csv file, which has the following data, for example:
test.csv
-------------
line 1, "1"
line 2, "2"

And I use the following code snippet to parse this file,

require 'fastercsv'
FasterCSV.read("test.csv")


unfortunately, It failed and complained that:

FasterCSV::MalformedCSVError: Unclosed quoted field on line 1.
    e:/ruby/lib/ruby/gems/1.8/gems/fastercsv-0.2.0/lib/faster_csv.rb:1165:in
`shift'
    e:/ruby/lib/ruby/gems/1.8/gems/fastercsv-0.2.0/lib/faster_csv.rb:1090:in
`shift'
    e:/ruby/lib/ruby/gems/1.8/gems/fastercsv-0.2.0/lib/faster_csv.rb:1040:in
`each'
    e:/ruby/lib/ruby/gems/1.8/gems/fastercsv-0.2.0/lib/faster_csv.rb:1051:in
`read'
    e:/ruby/lib/ruby/gems/1.8/gems/fastercsv-0.2.0/lib/faster_csv.rb:840:in
`read'
    e:/ruby/lib/ruby/gems/1.8/gems/fastercsv-0.2.0/lib/faster_csv.rb:790:in
`open'
    e:/ruby/lib/ruby/gems/1.8/gems/fastercsv-0.2.0/lib/faster_csv.rb:840:in
`read'

I'm wondering what the real problem is,

Do I really need to escape the double quote before pass the file to
read?
E34b5cae57e0dd170114dba444e37852?d=identicon&s=25 Logan Capaldo (Guest)
on 2006-04-27 06:05
(Received via mailing list)
On Apr 26, 2006, at 11:38 PM, Eric Luo wrote:

> require 'fastercsv'
> FasterCSV.read("test.csv")
>

Remember its "comma-separated", fiddling around I discovered that

line 1,"1"
line 2,"2"

Works absolutely fine. I'm not CSV guru so I don't know if FasterCSV
has a bug or if your CSV is malformed.
F1c441ba5569ec34d0613fe8c218e076?d=identicon&s=25 Eric Luo (Guest)
on 2006-04-27 07:50
(Received via mailing list)
I did check this problem out finally:

In the csv file,
line 1,"1"
line 2,  "2"

the line 1 could be parsed successfully, but the line 2 will failed.
The only difference between the two lines is that there is a space char
between the comma char and the double quote char in line 2, while line 1
not.

I suspect that space char between the comma char(,) and the double quote
char(") make the faster csv parser to take the space char as part of the
second field. And then the double quote should be escaped, but it
hadn't.

Is it a bug or expected?
This topic is locked and can not be replied to.