RubyでCSVファイルの(特定の)行や列を削除する方法が分かりません。
出来ればCSVライブラリを使ってどうにかしたいと考えています。
実現したいこと
まず、Rubyで下記のようなCSVファイル(csv.csv)を読み込みます。
--csv.csv--(旧)
a,1 b,2 c,3 d,4 e,5 f,6 g,7
そして、このCSVファイル(csv.csv)を下記のように1列目を3列目にコピーし、1列目を削除したいと色々と調べて試行錯誤しているのですが上手く行きません。
--csv.csv--(新)
1,a 2,b 3,c 4,d 5,e 6,f 7,g
Ruby
1 2require "csv" 3CSV.open('csv.csv', "r+", :encoding => "UTF-8", headers: true) do |file| 4 CSV.foreach("csv.csv", encoding: "UTF-8", headers: true) do |row| 5 row[2] = row[0] 6 row[0].delete 7 file << row 8 end 9end 10
次に、新CSVファイル(csv.csv)を読み込んで下記のように別のCSVファイル(csv_out.csv)に出力すると(csv.csv)の行を1行ずつ削除するというコードの書き方が調べても分かりません。
--csv_out.csv--
1,a 2,b 3,c 4,d 5,e 6,f 7,g
Ruby
1 2require "csv" 3CSV.open('csv.csv', "r+", encoding: "UTF-8") do |file| 4 CSV.foreach("csv.csv", encoding: "UTF-8") do |row| 5 CSV.open('csv_out.csv', "a", encoding: "UTF-8") do |f| 6 row.delete 7 f << row 8 file << row 9 end 10 end 11end 12
また、CSVファイルの何行何列目をダイレクトに削除するという方法も合わせてご回答頂けると嬉しい限りです。
よろしくお願いします。
関連
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/23 03:08