rubyの配列をcsvに保存したいと思っております。
しかし、csvに変換した時に余計な「""」がarrayの要素についてしまいstring型として扱われてしまい困っております。
array型のままにするか、もしくはstringからarray型に変換する方法はないのでしょうか?(複雑そうですが.....)
csvに書き込む前の配列
→ [["中山", "4回中山7日目 3歳上 ", "20171001(日)", "12R", "3歳上500万下", "1200", "ダ", "16:25", [["1", # ここからは配列としてcsvに取り込ませたい 1, "タイガーヴォーグ", "牡4", "57.0", "勝浦",], ["8", 16, "スズカグラーテ", "牝3", "53.0", "長岡"]] ]]
csvにとり込み後
→
中山,4回中山7日目 3歳上 ,20170923(土),12R,3歳上500万下,1200,ダ,16:25,"[[""1"", 1, ""タイガーヴォーグ"", ""牡4"", ""57.0"", ""勝浦""],[""8"", 16, ""スズカグラーテ"", ""牝3"", ""53.0"", ""長岡""]]"
となります。 配列として取り込ませたいところに ""が勝手についてしまうためstringとして保存されてしまいます。また配列の中の要素全てに「""〇〇""」というように連続してダブルコーテーションがつくのも違和感です。
csvは配列型でデータを保持することができないのでしょうか...?
該当コード
ruby
1 2def self.this_race_info_to_csv 3 4 this_race_info = [["中山", 5 "4回中山7日目 3歳上 ", 6 "20171001(日)", 7 "12R", 8 "3歳上500万下", 9 "1200", 10 "ダ", 11 "16:25", 12 [["1", # ここからは配列としてcsvに取り込ませたい 13 1, 14 "タイガーヴォーグ", 15 "牡4", 16 "57.0", 17 "勝浦",], 18 ["8", 19 16, 20 "スズカグラーテ", 21 "牝3", 22 "53.0", 23 "長岡"]] 24 ]] 25 26 header = ["競馬場", "開催情報", "日付", "レースの順番", "レース名", "距離", "芝かダート", "出走時刻", "出走馬情報"] 27 CSV.open("this_race_info.csv", "wb", :headers => header, :write_headers => true) do |csv| 28 this_race_info.each do |r| 29 binding.pry 30 csv << r 31 end 32 end 33 end
の結果が上でも示しましたが、
中山,4回中山7日目 3歳上 ,20170923(土),12R,3歳上500万下,1200,ダ,16:25,"[[""1"", 1, ""タイガーヴォーグ"", ""牡4"", ""57.0"", ""勝浦""],[""8"", 16, ""スズカグラーテ"", ""牝3"", ""53.0"", ""長岡""]]"
となってしまいます...
理想は
中山,4回中山7日目 3歳上 ,20170923(土),12R,3歳上500万下,1200,ダ,16:25,[["1", 1, "タイガーヴォーグ", "牡4", "57.0", "勝浦"],["8", 16, "スズカグラーテ", "牝3", "53.0", "長岡"]]
のようにできたら嬉しいです。
大変お手数おかけしますが、何かヒントなどいただけましたらとても嬉しいです。何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/27 04:12
2017/09/27 05:23