CSV classにおける文字列中のクォーテーションやカンマの扱いがわかりません
rubyにてテキストファイルを読み込み、csvファイルへ書き出そうとしています。
文字列中に/,/と/"/が含まれています。
数値はダブルクオートで囲いたいです。
一方で、pau",lはそのままの文字列として出力したいです。
該当のソースコード
meibo2.txt
1john m 18 2pau",l m 20 3alice f 15 4dabid m 17 5jasmin f 17
ruby
1require 'csv' 2 3CSV.open("meibo2.csv", "w") do |person| 4 CSV.foreach("meibo2.txt", col_sep: "\t", quote_char: '"', liberal_parsing: true) do |profile| 5 p profile 6 person << profile 7 end 8 p person 9end 10
これの出力結果が以下です。
["john", "m", "18"] ["pau\",l", "m", "20"] ["alice", "f", "15"] ["dabid", "m", "17"] ["jasmin", "f", "17"] <#CSV io_type:File io_path:"meibo2.csv" encoding:UTF-8 lineno:5 col_sep:"," row_sep:"\n" quote_char:"\"">
###期待するcsvファイルの中身
john,m,"18"
pau",l,m,"20"
alice,f,"15"
dabid,m,"17"
jasmin,f,"17"
###実際のcsvファイルの中身
john,m,18
"pau"",l",m,20
alice,f,15
dabid,m,17
jasmin,f,17
試したこと
CSV.foreach("meibo2.txt", col_sep: "\t", quote_char: '"', liberal_parsing: true) do |profile|
:quote_char: '"'
を追加しましたが、うまくできませんでした。
補足情報(FW/ツールのバージョンなど)
ruby 2.7.2
元の meibo2.txt の内容も記載しましょう。
また、「加工」とはどういう意味なのか記載しましょう。
申し訳ございません。meibo2.txtを載せ忘れました。
修正いたします。
回答2件
あなたの回答
tips
プレビュー