
はじめまして。
勉強中のRuby(2.0)で、
以下のようにCSVファイルの書式変換をしようとしています。
■変換前
# 入力ファイル1(input1.csv)
A, B, C, D
A1,B1,C1,D1
A2,B2,C2,D2
A3,B3,C3,D3
# 入力ファイル2(input2.csv)
B
C
■変換後(output.csv)
B, C, A, D
B1,C1,A1,D1
B2,C2,A2,D2
B3,C3,A3,D3
■変換内容
入力ファイル1に対して、入力ファイル2で指定された文字をヘッダーにもつ列を
順次先頭に移動していき、それを、出力ファイルとする。
■経緯
いろいろ試行錯誤をしながら、以下のような配列(output_ary)を
作るところまではできたのですが、
これをcsvに書き出す術がわからずにおります。
(カッコやダブルコーテーションがついたままになったり、
改行がされなかったり..)
(pp output_ary の結果)
pp output_ary
#=>[["B1","C1","A1","D1"],
["B2","C2","A2","D2"],
["B3","C3","A3","D3"],
["B4","C4","A4","D4"]]
お手数ですが どなたかご教示ください。
もちろん、「上記 output_ary のようなモノを作らなくてもこうすればできるよ」というご回答でもOKです。
よろしくお願いいたします。

No.3
- 回答日時:
#2です。
windowsで実行する場合ですが改行コードがCR+LFでファイルへ追加書き込みが希望でしたら
ファイルオープン時、
CSV::open("output.csv","a") do |writer|
としてください。
改行コードがCR+LFでファイルへ上書き書き込みが希望でしたら(以前のファイルの内容は削除されます)
ファイルオープン時、
CSV::open("output.csv","w") do |writer|
としてください。
ありがとうございます。
希望通りの結果が得られました。
ブロックも入れ子にしてしまうのですね..
まだ 動きがよく飲み込めていない気がするので、じっくりと確認してみます。
この4日間ほど(笑) 悩んでたことが 今日一日 いや半日で解決して
とてもすっきりしました。
今後も 勉強に励みます。
たいへんありがとうございました!

No.1
- 回答日時:
----以下の行をあなたのプログラムに追加してください------
output_ary.each do |ar|
line = ar.join(",")
print line,"\n"
end
------------------------------------
上記で、画面に出力されます。
ファイルに出力する場合は、リダイレクトしてください。
tatsu99 さん。
ご回答をありがとうございます。
希望通りの CSVファイルが作成できました。
標準出力のリダイレクトででできるのですね..
ずっと
CSV::open("output.csv","a") do |writer|
writer << output_ary
end
..の方法で正しく出力する方法を考えておりました。
(できれば こちらの方法で出力する方法も覚えたいのですが.. ^^; )
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
(再質問)エクセルのマクロボ...
-
パソコンのスクリーンセーバー...
-
pandasでsqlite3にテーブル作成...
-
WIN11にオフイスを複数入れるこ...
-
回復ドライブとインストールメ...
-
英数字を含む文字列(0-9,A-Z)...
-
VBScriptでExcel(2019)上のデー...
-
C++のCreateFile関数で、ASCII...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロ 空白セルを無視し...
-
VBAでcsvファイルもシートもあ...
-
ダブルコーテーション付きでCSV...
-
【ExcelVBA】300万件越えCSVか...
-
ファイル名を変数で書きこむfwr...
-
VBAで複数のCSVからレコードセ...
-
CSVで余計な空行が入る
-
複数のファイルをまたぐエクセ...
-
VB.netでShellExecuteがしたい
-
LibreOffice Calcのマクロで、...
-
【C#】 csvファイルをバイナリ...
-
pythonでリストをCSVに出力する...
-
EXCEL→CSV保存時のダブルクォー...
-
PYthon Django csv関連
-
pythonについて質問です。 csv...
-
マクロで使うfor文
-
プログラムの間違いについて
-
Pythonのコードエラーについて...
-
Rubyを使用してcsvファイルを処...
-
CSVデータの文字列置換
おすすめ情報