これ何て呼びますか Part2

Rubyを使用してcsvファイルを処理しているのですが、どうしてもできない事があり質問させていただきました。
下記のようにCSVファイルを処理したいのですが教えてください。
処理前CSVファイル内容:"abc",111,bbb,"ccc","123"
処理後CSVファイル内容:"abc",111,bbb,"xxx","321"

普通にCSVparserを用いて処理すると下記のようダブルクォーテーションが消えてしまいます。
処理後CSVファイル内容:abc,111,bbb,xxx,321

ご教授お願い致します。

A 回答 (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をひたすら駆使することで何とかなりそうですが。。。
    • good
    • 0

必要がなければダブルクォーテーションは付けられませんから、付けるならCSVにしてから、gsubなどで編集するんでしょうね。


必要な場合というのは、文字列の中にカンマとかダブルクォーテーションとか改行が含まれている場合。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報