how to write array value into csv file?

  • Follow


how  to  write  array value into  csv  file?
there is  array  a:
a[0]=date;asset;cash;finance;note;
a[1]=2009-12-31;580;1,693;201;500;
a[2]=2009-09-30; 680;1,777;2497;700;
i want to get array  a into  csv files as the following:

csvfile1:
date           2009-12-31      2009-09-30
asset            580              680
cash             1,693             1,777
finance          201               2497
note              500               700
csvfile2:
 date                  asset   cash     finance   note
 2009-12-31            580     1,693    201       500
 2009-09-30            680     1,777    2497      700

how can i do?
-- 
Posted via http://www.ruby-forum.com/.

0
Reply myocean135 (75) 4/11/2010 2:43:35 AM

Pen Ttt wrote:
> how  to  write  array value into  csv  file?
> there is  array  a:
> a[0]=date;asset;cash;finance;note;
> a[1]=2009-12-31;580;1,693;201;500;
> a[2]=2009-09-30; 680;1,777;2497;700;
> i want to get array  a into  csv files as the following:
> 
> csvfile1:
> date           2009-12-31      2009-09-30
> asset            580              680
> cash             1,693             1,777
> finance          201               2497
> note              500               700
> csvfile2:
>  date                  asset   cash     finance   note
>  2009-12-31            580     1,693    201       500
>  2009-09-30            680     1,777    2497      700
> 
> how can i do?



a=[]
a[0]='date;asset;cash;finance;note;'
a[1]='2009-12-31;580;1,693;201;500;'
a[2]='2009-09-30; 680;1,777;2497;700;'


file=File.new('csv2.csv','w')
for e in a do
  str_array=e.split(';')
  for x in str_array do
    file.write x + "\t\t\t"
  end
  file.puts
end

#output to csv2 file
-- 
Posted via http://www.ruby-forum.com/.

0
Reply Chen 4/11/2010 5:52:43 AM


Pen Ttt wrote:
> how  to  write  array value into  csv  file?
> there is  array  a:
> a[0]=date;asset;cash;finance;note;
> a[1]=2009-12-31;580;1,693;201;500;
> a[2]=2009-09-30; 680;1,777;2497;700;
> i want to get array  a into  csv files as the following:
> 
> csvfile1:
> date           2009-12-31      2009-09-30
> asset            580              680
> cash             1,693             1,777
> finance          201               2497
> note              500               700
> csvfile2:
>  date                  asset   cash     finance   note
>  2009-12-31            580     1,693    201       500
>  2009-09-30            680     1,777    2497      700
> 
> how can i do?

I'd suggest parsing the data first so that each element of a is itself 
an array of values. That makes it very easy to handle:

a=[]
a[0]="date;asset;cash;finance;note;"
a[1]="2009-12-31;580;1,693;201;500;"
a[2]="2009-09-30; 680;1,777;2497;700;"
b = a.map { |elem| elem.split(";") }

require 'fastercsv'
FasterCSV.open("csvfile2","w") do |csv|
  b.each { |row| csv << row }
end
FasterCSV.open("csvfile1","w") do |csv|
  b.transpose.each { |row| csv << row }
end

Use the :col_sep option to FasterCSV if you want tab-separated values 
(TSV) rather than comma-separated values (CSV)
-- 
Posted via http://www.ruby-forum.com/.

0
Reply Brian 4/11/2010 9:14:59 AM

2 Replies
776 Views

(page loaded in 0.066 seconds)

Similiar Articles:













7/22/2012 11:18:42 AM


Reply: