Memoize

BasicWerk   EC Support   Technique   Facebook  

20140817100802_ruby_csv

ruby_csv

 

Ruby で CSV モジュールを使ってみた。

一つのカラム内に改行が含まれる CSV も問題なく読めた。

 

サンプルの CSV はこんな。

sample_nl.csv
 
% cat sample_nl.csv
id,name,description
1,"Rubyベストプラクティス -プロフェッショナルによるコードとテクニック","本書は、Rubyでのソフトウェア開発経験者を対
象に、プログラミングの実践的なテクニックとアイデアを、実際に使われているライブラリやコードを題材に解説します。
テキスト処理やファイル管理から、テスト駆動開発、API設計、関数型言語的機能の利用、多言語化やデバッグ、保守に到るまで幅広いトピックを網羅。
付録ではRuby 1.8と1.9の両対応の手法やワーストプラクティスを取り上げるなど、より優れたコードを書くための力を身につけることができます。
Ruby1.9に完全対応。ケーススタディに基づいて学ぶ本書は、より良いコーディングについて学びたいRubyプログラマ必携の一冊です。"
2,"プログラミング言語 Ruby","表現力の高い文法と、強力で内容の豊かなAPIを持つコアクラスライブラリを備えた動的プログラミン
グ言語であるRubyは、プログラミングの楽しさを感じる言語として世界中のプログラマから大きな支持を集めています。
 
本書はRubyプログラミング言語を徹底的に、かつわかりやすく解説するものです。
字句構造、データ型、式と演算子から条件分離、関数プログラミング、クラスとモジュール、メタプログラミングまでRuby言語のすべてを包括的に説明しています。
Rubyコアプラットフォームやプログラミング環境についても詳述。
 
Rubyを学ぶすべての人におくるRuby解説書の決定版です。"
3,"プログラミングRuby 1.9 -言語編-","定評があるRubyの解説書を、Ruby作者の監訳により日本語に翻訳!
Ruby は、まつもとゆきひろ氏によるオブジェクト指向プログラミング言語で、楽しく生産的なプログラミングを支援する。言語本来の強力さと使いやすさに加え
て、アジャイル開発との相性の良さや、Webアプリケーション開発フレームワークRuby on Railsの圧倒的な人気などに後押しされて、今では日本だけでなく世界
中で使われている。
本書は、Ruby1.9 の定番解説書""Programming Ruby 1.9: The Pragmatic Programmers' Guide""を、
作者自身の監訳で翻訳発行するもの。(日本語版は、言語編とライブラリ編の二分冊)"
 

 

以下のスクリプトは引数に「ファイル名」と任意の数の「カラム名」を取って該当するカラムの内容だけを表示する。

read_csv.rb
 
#! /usr/bin/ruby
# coding: utf-8
 
require 'csv'
file = ARGV.shift
cols = ARGV
CSV.foreach(file, headers: true) do |row|
    outputs = cols.map {|col| row[col] }
    puts outputs.join(",")
end
 

 

sample_nl.csv の description(改行が含まれる部分)を読み飛ばして、id と name だけ取得してみよう。

 
% read_csv.rb sample_nl.csv id name
1,Rubyベストプラクティス -プロフェッショナルによるコードとテクニック
2,プログラミング言語 Ruby
3,プログラミングRuby 1.9 -言語編-
 

 

容量の大きな CSV を相手にする場合、速度はあまり期待できない。

 


© Shin Nakamura/BasicWerk 2014