Venks
12/6/2007 2:37:00 AM
Also, I tried collect! method earlier, but didn't know how to apply
split within collect!. After seeing your example I understood the
proper syntax. I also understand that map and collect! are the same.
On Dec 5, 2007 9:16 PM, Venks <venkatesh.mantha@gmail.com> wrote:
> Thanks for your reply. It works now. I was looking for the method
> "map" over "split".
>
>
> On Dec 5, 2007 7:53 PM, Alex Gutteridge <alexg@kuicr.kyoto-u.ac.jp> wrote:
> > On 6 Dec 2007, at 09:38, Venks wrote:
> >
> > > Thanks for your quick reply. I realize that you don't even need to use
> > > split. What I am missing is how to create a 2 dimensional array with
> > > each line contents in an array assuming that they are separated by a
> > > COMMA.
> > >
> > > Let me be more specific. Assume that we have a file under
> > > /tmp/test.txt with the following contents.
> > >
> > > aaa, 10, test1
> > > bbb, 20, test2
> > > ccc, 30, test3
> > > ddd, 40, test4
> > >
> > > I want to create a 2 dimensional array with each line being an array.
> > >
> > > lines = `cat /tmp/test.txt` will create a single dimensional array
> > > by default.
> >
> > I'm not so sure about that last comment. As far as I know backticks
> > always return a String.
> >
> > The easiest way to do what you want is just to split the String from
> > backticks by line and then each line by whatever delimiter you chose.
> > You can do this with map for instance:
> >
> > [alexg@powerbook]/Users/alexg/Desktop(47): cat test.txt
> > aaa, 10, test1
> > bbb, 20, test2
> > ccc, 30, test3
> > ddd, 40, test4
> > [alexg@powerbook]/Users/alexg/Desktop(48): cat capture.rb
> > p `cat #{ARGV[0]}`.split(/\n/).map{|line| line.split(/, /)}
> > [alexg@powerbook]/Users/alexg/Desktop(49): ruby capture.rb test.txt
> > [["aaa", "10", "test1"], ["bbb", "20", "test2"], ["ccc", "30",
> > "test3"], ["ddd", "40", "test4"]]
> >
> > Alex Gutteridge
> >
> > Bioinformatics Center
> > Kyoto University
> >
> >
> >
> >
>