CSVファイル・アクセス (4/4)
作成:2013-03-18 07:35
更新:2013-03-18 07:35
更新:2013-03-18 07:35
■テキストとCSVデータの変換
これでCSVデータの読み書きは行えるようになりましたが、この他にもう1つ覚えて行きたいことがあります。それは「CSVデータの変換」です。
CSVでは、データの読み書きは行単位で行われました。1つの行に記述されているデータは、配列にまとめられて操作されるようになっていました。ということは、CSVを利用するとき、「テキストをCSV用の配列に変換する」あるいは「CSVの配列をテキストに変換する」といった操作が必要となってくるでしょう。
これらは、csvライブラリを読み込んでいれば、Stringや配列のメソッドを利用して行えるようになります。以下に整理しておきましょう。
●CSV配列をテキストに変換する
●テキストをCSV配列に変換する
テキストを配列にしたり、配列をテキストにしたりすることはその他の標準的なやり方でもできますが、CSV関連のメソッドは「CSVのデータである」という前提で処理をしてくれます。例えば、配列をテキストにする際にも、CSVのデータの形式で変換してくれるのです。逆も、CSVデータの形式で記述されているテキストを解析して配列に変換します。
下に、テキストファイルを読み込んでCSVデータに変換して出力するサンプルを挙げておきました。といっても、「CSVデータの形式で書かれたテキストファイルを読み込んでCSVファイルに書き出す」わけで、できるファイルはまったく同じ内容だったりしますが……。とりあえず「テキストを読み込んでCSVデータに変換する」という処理の流れはわかるでしょう。
CSVでは、データの読み書きは行単位で行われました。1つの行に記述されているデータは、配列にまとめられて操作されるようになっていました。ということは、CSVを利用するとき、「テキストをCSV用の配列に変換する」あるいは「CSVの配列をテキストに変換する」といった操作が必要となってくるでしょう。
これらは、csvライブラリを読み込んでいれば、Stringや配列のメソッドを利用して行えるようになります。以下に整理しておきましょう。
●CSV配列をテキストに変換する
変数 = 《配列》.to_csv
●テキストをCSV配列に変換する
変数 = 《テキスト》.parse_csv
テキストを配列にしたり、配列をテキストにしたりすることはその他の標準的なやり方でもできますが、CSV関連のメソッドは「CSVのデータである」という前提で処理をしてくれます。例えば、配列をテキストにする際にも、CSVのデータの形式で変換してくれるのです。逆も、CSVデータの形式で記述されているテキストを解析して配列に変換します。
下に、テキストファイルを読み込んでCSVデータに変換して出力するサンプルを挙げておきました。といっても、「CSVデータの形式で書かれたテキストファイルを読み込んでCSVファイルに書き出す」わけで、できるファイルはまったく同じ内容だったりしますが……。とりあえず「テキストを読み込んでCSVデータに変換する」という処理の流れはわかるでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
# coding: utf-8 require 'csv' result = [] File.foreach('sample.txt') do |line| result << line.parse_csv end CSV.open('sample_move.csv','w') do |csv| result.each do |row| csv << row end end puts('sample_move.csv に保存しました。')
※関連コンテンツ