# Changing the quote-character in csv parsing

**URL:** <https://www.ruby-forum.com/t/changing-the-quote-character-in-csv-parsing/56181>\
**Category:** Ruby\
**Created:** [March 28, 2006, 5:04pm UTC](https://www.ruby-forum.com/t/changing-the-quote-character-in-csv-parsing/56181 "2006-03-28T17:04:03Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![snej](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ecc23a/32.png) [@snej](https://www.ruby-forum.com/u/snej)\
**Post date:** [March 28, 2006, 5:04pm UTC](https://www.ruby-forum.com/t/changing-the-quote-character-in-csv-parsing/56181/1 "2006-03-28T17:04:03Z")

</div>

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 already have searched the rdoc for the csv library without any  
success.

---

<div class="post-metadata">

**Author:** ![snej](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ecc23a/32.png) [@snej](https://www.ruby-forum.com/u/snej)\
**Post date:** [March 28, 2006, 6:09pm UTC](https://www.ruby-forum.com/t/changing-the-quote-character-in-csv-parsing/56181/2 "2006-03-28T18:09:04Z")

</div>

Hi,  
Don’t know how it is with fastercsv but csv.rb has double quote  
hardcoded as  
I understand. I think best is to substitute all double quots in your  
text  
with single and vice versa. You can do it with gsub this way:

line.gsub!(/’|"/){ |c|  
if c == “’”  
“”"  
else  
“’”  
end  
}

jan

---

<div class="post-metadata">

**Author:** ![snej](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ecc23a/32.png) [@snej](https://www.ruby-forum.com/u/snej)\
**Post date:** [March 28, 2006, 6:09pm UTC](https://www.ruby-forum.com/t/changing-the-quote-character-in-csv-parsing/56181/3 "2006-03-28T18:09:37Z")

</div>

Jan Topinski wrote:

> ```
> "'"
> 
> ```
> 
> end  
> }

“He said, “I don’t care.””.tr("’"", “”’")

---

<div class="post-metadata">

**Author:** ![snej](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ecc23a/32.png) [@snej](https://www.ruby-forum.com/u/snej)\
**Post date:** [March 28, 2006, 6:19pm UTC](https://www.ruby-forum.com/t/changing-the-quote-character-in-csv-parsing/56181/4 "2006-03-28T18:19:01Z")

</div>

ups me blind 😉  
jan
