[ruby-list:47257] Re: 変則的なCSVデータの処理

From: keiichi matsunaga <ma2@...>
Date: 2010-07-22 05:38:42 UTC
List: ruby-list #47257
On 7/22/2010 2:34 PM, Hideo Konami wrote:
> 小波です.
> 
> 次のような行をもつ CSV ファイルがあり,split や scan による切り分けが
> うまくいかずにはまっています.
> 
> "Bach, JC","協奏交響曲","C",,,,,"S",,"S",,"S+2","S",2,2,,2,,,,,,,,,,
> "Beethoven","Pf. 協奏曲第1番","C",15,"S",,,,,,,1,2,2,2,,2,2,,,,"Y",,,,,"18 11 9"
> 
> 最初のカラム(人名)は '"' と '"' の間に ',' が存在していることがある
> ので, 単純に split(',')  で切ると当然人名がぶった切れます.また数字
> だけのレコードはカラムに '"' で挟まずに入っています.
> 
> たとえば1行目なら次のように nil も入れて配列化したいのですが,うまい
> やり方があったら教えていただけないでしょうか.
> 
> ["Bach, JC","協奏交響曲","C",nil,nil,nil,nil,"S",nil,"S+2","S",2,(略) ]

CSV用のライブラリを使うといいのではないでしょうか?
僕は FasterCSV(http://fastercsv.rubyforge.org/)ってのを使ってます。


-- 
松永肇一(keiichi matsunaga)
株式会社ライフメディア 開発部

In This Thread