質問: RUBY言語での質問です。 巨大なカンマ区切りテキストデータを処理する必要がありまして、 不要な行はRUBYのコードにより削除できたのですが、不要な列を削除するためのコードをお聞きしたいです。 パソコン環境はwindowsでインストールされている言語はrubyのみでありまして、rubyでできればありがたいです。 ファイルの内容としては、現在、カンマ区切り形式で1列から80列まで記載されており、今回必要なのはその中の1列目および、3列目から8列目まで、そして12列目から25列目までという限定的なものなのです。 今回はたまたま上記の部分でありましたが、1列目and3列目and10列目and12列目という風に必要となるときもあります。 今まではエクセルで表計算ソフトで何とかなる領であったためだましだまし作業しておりましたが開くだけで表計算ソフトがハングアップする状況のファイルが増えてきましてお力をお貸しいただきたく投稿させていただきました。 その特定の列のみを抽出してくれるようなコードを教えていただきたいです。
回答: ``` require "csv" COLS=[1,*(3..8),*(12..25)].map{|x| x-1} CSV.open("出力ファイル名","w") do |out| CSV.foreach("入力ファイル名") do |row| out << row.values_at(*COLS) end end ``` Arrayは0番始まりなので、`map`で1引いてます。