Comma Separated Values Parsing Utilities

The module csv offers a few useful functions to read data files in ‘csv’ format. This latter is a quite popular format used to easily save simple tabular data as comma-separated values with several lines. This format can be used to exchange data with spreadsheets applications.

Reads the given filename and returns a table that stores the values from the given file (filename argument). The table returned is in the form {{row1_v1, row1_v2, ...}, {row2_v1, row2_v2, ...}, ...} so that you can obtain the number of lines read by using the # operator (number of elements in a table). The table can contain both numeric values or strings in accordance with the csv specifications. Each row can potentially contain a different number of elements. The user can check the number of elements of each row if needed.

Here an example of utilization:

csv = require 'csv'

-- load some data and save the results in a table
t ='examples/data/sige-sims-prof.csv')

-- if the data contains only numbers it can be easily converted
-- intro matrix form
m = matrix.def(t)

-- using the matrix m is very easy to plot the data
p = graph.plot("SiGe SIMS profile")
p:addline(graph.xyline(m:col(1), m:col(2)), 'blue')

Please note that the function returns a table, not a matrix. If the table is in rectangular form and if it contains only numbers, it can easily be converted into a matrix using the function matrix() as shown in the example above.


This function splits the string str using commas as separators in accordance with the csv format specifications. This function can be useful to build a customized csv parser.