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.



import "io" for File
 
var lines = File.read("rc.csv").split("\n").map { |w| w.trim() }.toList
 
var file = File.create("rc.csv") // overwrite existing file
file.writeBytes(lines[0] + ",SUM\n")
for (line in lines.skip(1)) {
    if (line != "") { 
        var nums = line.split(",").map { |s| Num.fromString(s) }
        var sum = nums.reduce { |acc, n| acc + n }
        file.writeBytes(line + ",%(sum)\n")
    }
}
file.close()