CSV spreadsheet files are suitable for storing tabular data in a relatively portable way.

The CSV format is flexible but somewhat ill-defined.

For present purposes, authors may assume that the data fields contain no commas, backslashes, or quotation marks.



Task

Read a CSV file, change some values and save the changes back to a file.

For this task we will use the following CSV file:

C1,C2,C3,C4,C5
1,5,9,13,17
2,6,10,14,18
3,7,11,15,19
4,8,12,16,20

Suggestions


 Show how to add a column, headed 'SUM', of the sums of the rows.
 If possible, illustrate the use of built-in or standard functions, methods, or libraries, that handle generic CSV files.



 
# Project : CSV data manipulation
 
load "stdlib.ring"
fnin = "input.csv"
fnout = "output.csv"
fpin = fopen(fnin,"r")
fpout = fopen(fnout,"r")
csv = read(fnin)
nr = 0
csvstr = ""
 
while not feof(fpin)
        sum = 0
        nr = nr + 1
        line = readline(fpin)
        if nr = 1
           line = substr(line,nl,"")
           line = line + ",SUM"
           csvstr = csvstr + line + windowsnl()
        else
           csvarr = split(line,",")
           for n = 1 to len(csvarr)
                sum = sum + csvarr[n]
           next
           line = substr(line,nl,"")
           line = line + "," + string(sum)
           csvstr = csvstr + line + windowsnl()
        ok
end
write(fnout,csvstr)
csvend = read(fnout)
fclose(fpin)
fclose(fpout)
see csvend + nl
 