• 締切済み

Rubyを使用してcsvファイルを処理しているのですが、どうしてもでき

Rubyを使用してcsvファイルを処理しているのですが、どうしてもできない事があり質問させていただきました。 下記のようにCSVファイルを処理したいのですが教えてください。 処理前CSVファイル内容:"abc",111,bbb,"ccc","123" 処理後CSVファイル内容:"abc",111,bbb,"xxx","321" 普通にCSVparserを用いて処理すると下記のようダブルクォーテーションが消えてしまいます。 処理後CSVファイル内容:abc,111,bbb,xxx,321 ご教授お願い致します。

みんなの回答

  • ayudaia
  • ベストアンサー率0% (0/0)
回答No.2

1.8系のFastrCSV , 1.9系のcsv が前提で話します。 すべての項目にダブルクォーテーションがついてもよければ、 書き込み時に :force_quotes => true オプションをつけると "abc","111","bbb","xxx","321" こうなります。 具体的な解決策でなくて恐縮ですが、 CSVの1行目にヘッダーをつけます。  "NAME","AGE,"ADDRESS","ZIP","PHONE" #=>ヘッダ "abc",111,bbb,"ccc","123" 読み込み時に :headers=>true オプションをつけます。 csv = CSV.read( "filename.csv" , :headers=>true ) すると、単なる配列ではなくて CSV::Table オブジェクトで読み込まれます。 csv['NAME'] で1列取り出せたりするので、 あとは、methodをひたすら駆使することで何とかなりそうですが。。。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

必要がなければダブルクォーテーションは付けられませんから、付けるならCSVにしてから、gsubなどで編集するんでしょうね。 必要な場合というのは、文字列の中にカンマとかダブルクォーテーションとか改行が含まれている場合。

関連するQ&A