Hi,
I have a bunch of files containing lines as comma-seperated values.
Unfortunately, the character used for quoting is a single quote (’) and
not the double quote ("). How can I tell the csv library (or fastercsv
or any other csv-parsing library) which character is used for quoting?
Some of the files contain fields like ‘quoted, but with comma’, which
are seperated into two fields at the comma:
irb(main):003:0> line = “one, ‘quoted’, ‘quoted, but with comma’”
=> “one, ‘quoted’, ‘quoted, but with comma’”
irb(main):006:0> CSV::parse_line(‘some words “some quoted text” some
more words’, ’ ')
=> [“some”, “words”, “some quoted text”, “some”, “more”, “words”]
irb(main):001:0> require ‘rubygems’
=> true
irb(main):002:0> require_gem ‘fastercsv’
=> true
irb(main):004:0> line.parse_csv
=> [“one”, " ‘quoted’", " ‘quoted", " but with comma’"]
The output should be [“one”, “‘quoted’”, “‘quoted, but with comma’”]
I have a bunch of files containing lines as comma-seperated values.
Unfortunately, the character used for quoting is a single quote (’)
and not the double quote ("). How can I tell the csv library (or
fastercsv or any other csv-parsing library) which character is used
for quoting?
I’m not aware of a way to change it for either library, sadly. If
your data is simple, you might get away with manipulating it into shape:
require “csv”
=> true
line = “one,‘quoted’,‘quoted, but with comma’”
=> “one,‘quoted’,‘quoted, but with comma’”
CSV.parse_line(line.tr("’", ‘"’))
=> [“one”, “quoted”, “quoted, but with comma”]
Unfortunately, on of the examples you showed is more complicated than
that:
line = ‘some words “some quoted text” some more words’
=> “some words “some quoted text” some more words”
CSV.parse_line(’"’ + line.gsub(’"’, ‘""’).tr("’", ‘"’) + ‘"’)
=> [“some words “some quoted text” some more words”]
Those transforms need to be done on a field by field basis though, to
correctly convert data like that.
Hope that helps.
James Edward G. II
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.