
csv_read(+File, -Rows, +Options)

   Read a file containing comma separated values (csv format)

Arguments
   File                File name (string or atom)
   Rows                List of lists or structures (output)
   Options             List of options

Type
   library(csv)

Description

        Reads a file containing comma separated values, and returns the
        file content as a list.  The file may have an optional .csv suffix.
    
        The result list contains one element for each record/row in the
        file.  By default, each list element is itself a list, containing
        the row's field values.  Alternatively, the type-option can be used
        to return structures instead of lists.
    
        The data elements are strings, unless they can be interpreted as
        numbers (by ECLiPSe's number_string/2 predicate) and the 'convert'
        option is true (the default).
    
        Options are:
        
        convert:Bool (default true)
            If a field can be converted to an integer or float using
            number_string/2, return this number.  Otherwise return a string.
        strip:Bool (default false)
            Strip leading and trailing space from the field value.
            By default this is part of the data.
        type:Type (default 'list')
            Data type of returned rows: 'list' for a list of fields,
            name/arity for terms with this functor (arity can be left
            uninstantiated).
        
        
    
    

Modes and Determinism
   csv_read(+, -, +) is det

Examples
   
    % Given file data.csv containing the line:
    % a, b, 123, c d," e f "

    ?- csv_read("data.csv", Rows, []).
    Rows = [["a", " b", 123, " c d", " e f "]]

    ?- csv_read("data.csv", Rows, [strip:true, convert:false]).
    Rows = [["a", "b", "123", "c d", " e f "]]

    ?- csv_read("data.csv", Rows, [strip:true, type:row/N]).
    Rows = [row("a", "b", 123, "c d", " e f ")]
    N = 5


See Also
   number_string / 2, csv_read_row / 3
