CSVで文字列だけダブルクォートで囲みたい場合

数値は囲わず、文字列はダブルクォートで囲みたい。
force_quotes: trueだと数値もクォートされる。

結論

quote_char: ''をオプションに指定して、渡す文字列の前後をダブルクォートで囲む。

解説

ここでforce_quotes:trueの分岐

https://github.com/ruby/csv/blob/master/lib/csv/writer.rb#L139

ここでforce_quotes:falseだった場合の分岐

https://github.com/ruby/csv/blob/master/lib/csv/writer.rb#L147

“"hoge”"

のような文字列を作っていると@quotable_patternに一致してしまい、

“”“hoge”“”

のような文字になってしまう。

のでquate_fieldで囲まれても問題ないようにから文字を設定してあげる。
https://github.com/ruby/csv/blob/master/lib/csv/writer.rb#L129-L136

Comments