- 締切済み
Rubyを使用してcsvファイルを処理しているのですが、どうしてもでき
Rubyを使用してcsvファイルを処理しているのですが、どうしてもできない事があり質問させていただきました。 下記のようにCSVファイルを処理したいのですが教えてください。 処理前CSVファイル内容:"abc",111,bbb,"ccc","123" 処理後CSVファイル内容:"abc",111,bbb,"xxx","321" 普通にCSVparserを用いて処理すると下記のようダブルクォーテーションが消えてしまいます。 処理後CSVファイル内容:abc,111,bbb,xxx,321 ご教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ayudaia
- ベストアンサー率0% (0/0)
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)
必要がなければダブルクォーテーションは付けられませんから、付けるならCSVにしてから、gsubなどで編集するんでしょうね。 必要な場合というのは、文字列の中にカンマとかダブルクォーテーションとか改行が含まれている場合。