「ruby/サンプル/Ruby1.8 FasterCsvでCSVファイルの読み書き(ダブルクォーテーション付き」の編集履歴(バックアップ)一覧はこちら

ruby/サンプル/Ruby1.8 FasterCsvでCSVファイルの読み書き(ダブルクォーテーション付き」(2013/05/01 (水) 21:35:06) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* ruby/サンプル/Ruby1.8 FasterCsvでCSVファイルの読み書き(ダブルクォーテーション付き * サンプルソース #highlight(ruby){{ # Ruby1.8+FasterCsv # FasterCsvでCSVファイルの読み書き(ダブルクォーテーション付き require 'rubygems' require 'fastercsv' # 構造体Memberを作成 Member = Struct.new("Member", :name, :email, :age) # Member構造体の配列作製 ary = Array.new ary << Member.new("ちゃぱてぃ", "chapati@example.com", 12) ary << Member.new("ぶるーべれー", "blueberet@example.com", 13) puts "CSV出力開始" # Member構造体の配列を標準出力に出力 puts ary # CSVファイルを開く。書き込み、ダブルクオーテーション囲み FasterCSV.open("faster.csv", "w", {:force_quotes => true}) do |csv| for row in ary # Member構造体を一行ずつCSV出力 csv << row end end puts "CSV出力終了" # 配列をクリア ary.clear puts "CSV読込開始" # CSVファイルを読み込み一行ずつ処理をする # 読み込む時は{:force_quotes => true}がなくても大丈夫です FasterCSV.foreach("faster.csv") do |row| member = Member.new member.name = row[0] member.email = row[1] member.age = row[2].to_i ary.push member end # CSVの読み込み結果を標準出力に出力 puts ary puts "CSV読込終了" }} + 名前、メールアドレス、年齢の要素を持つ構造体「Member」作成し + 配列に構造体「Member」でCSVに出力する内容を作成 + CSVに出力後、配列をクリアして + 出力した内容を再度読み込んで見るサンプルです。 - ダブルクォーテーションで囲んだCSVにするには、ファイルを開く時、以下のように「:force_quotes => true」を追加します。 -- 出力する要素の中にカンマが入っていると、自動的にダブルクォーテーション囲みになるのですが、これは常に囲むように強制するオプションです。 #highlight(){{ FasterCSV.open("faster.csv", "w", {:force_quotes => true}) do |csv| }} - 読み込みでは、オプションを付けなくても自動的にダブルクォーテーションを外して要素を取り出してくれます。 - 今回、構造体を作るクラス「Struct」を使ってみましたが、凄い便利ですね。 - CSVクラスにぽいと渡すだけで、中の変数をCSVに出力してくれました。 * 実行結果(コンソール #highlight(){{ CSV出力開始 #<struct Struct::Member name="\343\201\241\343\202\203\343\201\261\343\201\246\343\201\203", email="chapati@example.com", age=12> #<struct Struct::Member name="\343\201\266\343\202\213\343\203\274\343\201\271\343\202\214\343\203\274", email="blueberet@example.com", age=13> CSV出力終了 CSV読込開始 #<struct Struct::Member name="\343\201\241\343\202\203\343\201\261\343\201\246\343\201\203", email="chapati@example.com", age=12> #<struct Struct::Member name="\343\201\266\343\202\213\343\203\274\343\201\271\343\202\214\343\203\274", email="blueberet@example.com", age=13> CSV読込終了 }} * 実行結果(CSVファイル #highlight(){{ "ちゃぱてぃ","chapati@example.com","12" "ぶるーべれー","blueberet@example.com","13" }} - 「:force_quotes => true」をつけたので、全ての要素がダブルクォーテーションで囲まれています。 * 蛇足 - Rubyには標準でCSVファイルを扱うクラスがあります(便利!) - ですが、このクラスがあまり早くないとの事で - FasterCsvというクラスが人気を集めており、Ruby1.9ではFasterCsvを元にして標準のCSVクラスが修正されたそうです。 * サンプルダウンロード &ref(fasterCsvSample.rb) * コメント #pcomment(reply)
Ruby1.8とFasterCsvでCSVファイルを読み書き(ダブルクォーテーション付き)するサンプルです。 * 目次 #contents(fromhere=true) * サンプルソース #highlight(ruby){{ # Ruby1.8+FasterCsv # FasterCsvでCSVファイルの読み書き(ダブルクォーテーション付き require 'rubygems' require 'fastercsv' # 構造体Memberを作成 Member = Struct.new("Member", :name, :email, :age) # Member構造体の配列作製 ary = Array.new ary << Member.new("ちゃぱてぃ", "chapati@example.com", 12) ary << Member.new("ぶるーべれー", "blueberet@example.com", 13) puts "CSV出力開始" # Member構造体の配列を標準出力に出力 puts ary # CSVファイルを開く。書き込み、ダブルクオーテーション囲み FasterCSV.open("faster.csv", "w", {:force_quotes => true}) do |csv| for row in ary # Member構造体を一行ずつCSV出力 csv << row end end puts "CSV出力終了" # 配列をクリア ary.clear puts "CSV読込開始" # CSVファイルを読み込み一行ずつ処理をする # 読み込む時は{:force_quotes => true}がなくても大丈夫です FasterCSV.foreach("faster.csv") do |row| member = Member.new member.name = row[0] member.email = row[1] member.age = row[2].to_i ary.push member end # CSVの読み込み結果を標準出力に出力 puts ary puts "CSV読込終了" }} * 解説 + 名前、メールアドレス、年齢の要素を持つ構造体「Member」作成し + 配列に構造体「Member」でCSVに出力する内容を作成 + CSVに出力後、配列をクリアして + 出力した内容を再度読み込んで見るサンプルです。 - ダブルクォーテーションで囲んだCSVにするには、ファイルを開く時、以下のように「:force_quotes => true」を追加します。 -- 出力する要素の中にカンマが入っていると、自動的にダブルクォーテーション囲みになるのですが、これは常に囲むように強制するオプションです。 #highlight(){{ FasterCSV.open("faster.csv", "w", {:force_quotes => true}) do |csv| }} - 読み込みでは、オプションを付けなくても自動的にダブルクォーテーションを外して要素を取り出してくれます。 - 今回、構造体を作るクラス「Struct」を使ってみましたが、凄い便利ですね。 - CSVクラスにぽいと渡すだけで、中の変数をCSVに出力してくれました。 * 実行結果(コンソール #highlight(){{ CSV出力開始 #<struct Struct::Member name="\343\201\241\343\202\203\343\201\261\343\201\246\343\201\203", email="chapati@example.com", age=12> #<struct Struct::Member name="\343\201\266\343\202\213\343\203\274\343\201\271\343\202\214\343\203\274", email="blueberet@example.com", age=13> CSV出力終了 CSV読込開始 #<struct Struct::Member name="\343\201\241\343\202\203\343\201\261\343\201\246\343\201\203", email="chapati@example.com", age=12> #<struct Struct::Member name="\343\201\266\343\202\213\343\203\274\343\201\271\343\202\214\343\203\274", email="blueberet@example.com", age=13> CSV読込終了 }} * 実行結果(CSVファイル #highlight(){{ "ちゃぱてぃ","chapati@example.com","12" "ぶるーべれー","blueberet@example.com","13" }} - 「:force_quotes => true」をつけたので、全ての要素がダブルクォーテーションで囲まれています。 * 蛇足 - Rubyには標準でCSVファイルを扱うクラスがあります(便利!) - ですが、このクラスがあまり早くないとの事で - FasterCsvというクラスが人気を集めており、Ruby1.9ではFasterCsvを元にして標準のCSVクラスが修正されたそうです。 * サンプルダウンロード &ref(fasterCsvSample.rb) * コメント #pcomment(reply)

表示オプション

横に並べて表示:
変化行の前後のみ表示: