George George wrote: > i have a listing which looks like this > 1 > 2 > 3 > > 3 > 4 > 5 > > 20 > 3 > 5 > 5 > > i would like a quick way to format that output such that i end up with 3 > columns like the following. > 1,2,20 > 2,4,3 > 3,5,5 > 5 > > any ideas? src = "1\n2\n3\n\n3\n4\n5\n\n20\n3\n5\n5" rows = src.split("\n\n").collect { |b| b.split("\n") } m = rows.collect { |r| r.size }.max m.times { |i| puts rows.collect { |r| r[i] }.join(",") } No witchcraft there. I'd say it's better to use fastercsv gem for outputting, as it handles values which need quoting (e.g. values which themselves contain commas) require 'rubygems' require 'fastercsv' src = "1\n2\n3\n\n3\n4\n5\n\n20\n3\n5,9\n5" rows = src.split("\n\n").collect { |b| b.split("\n") } m = rows.collect { |r| r.size }.max FCSV { |out| m.times { |i| out << rows.collect { |r| r[i] } } } -- Posted via http://www.ruby-forum.com/.