2016-10-21 7 views
0

として、私は、私は配列の形でcsvファイルに書いていた文字列の値を持つ追加された - 私は私のファイルをチェックインするとは引用符

output = "This is a, ruby output" 
CSV.open("output/abc.csv", "a+") do |csv| 
    csv << [output] 
end 

abc.csv追加行は引用符( ")でを持っています私はそれを取り除くことができますどのようにフィールドの開始と終了。?

ファイル出力など---

"This is a, ruby output" 

は、これまでのところ、私はtrまたはsliceを試してみましたcsvに保存する前に、書き込みがそれを引き起こしているようです。

+0

これが「有効」CSV(CSVが正式に定義されていませんが)で、潜在的にフィールド内のカンマが正しく出力を読み取りどんなことで理解されていることを確認する必要がありました。コンマでフィールドを結合したいだけなら、CSVライブラリをスキップし、 '[output] .join( '、')'を使ってください。 – Owen

+0

問題を再現できません。このコードは 'This is a ruby​​ output'を引用符なしで出力します。 'force_quotes'オプションがtrueに設定されている場合は引用符を出力しますが、デフォルトではfalseであり、スニペットでは設定されません。文字列に引用符やカンマがある場合は引用符を出力しますが、引用符はありません。つまり、あなたの例をもう一度チェックしてください。そうでない場合は、何か非常に奇妙なのであなたが取り組んでいるRubyを報告してください。 – Amadan

+0

@Owen:手作業でCSVを書くことは危険であり、助かりません。 – Amadan

答えて

3

引用符を削除すると、出力はもはやCSVではなくなります。 CSVクラスは異なる区切り文字を使用するように指示することができ、その区切り文字が入力に含まれている場合にのみ引用します。たとえば、次のように

require 'csv' 
output = "This is a, ruby output" 
File.open("output/abc.csv", "a+") do |io| 
    csv = CSV.new(io, col_sep: '^') 
    csv << [output, "the end"] 
end 

出力:

This is a, ruby output^the end 
+1

@Owenの説明に感謝します。私は役に立たない問題でうんざりしていたようですが、あなたの説明はそれを明確にします。新しいことを学びました。 – Aniruddha