Availability::- use_module(library(csv)).
(can be autoloaded)
[det]csv(?Rows)//
[det]csv(?Rows,
+Options)//
Prolog DCG to‘read/write’CSV data. Options:
- separator(+Code)
- The comma-separator. Must be a character code. Default is (of course)
the comma. Character codes can be specified using the 0’notation.
E.g., using
separator(0';)
parses a semicolon separated
file.
- ignore_quotes(+Boolean)
- If
true
(default false), threat double quotes as a normal
character.
- strip(+Boolean)
- If
true
(default false
), strip leading and
trailing blank space. RFC4180 says that blank space is part of the data.
- skip_header(+CommentLead)
- Skip leading lines that start with CommentLead. There is no
standard for comments in CSV files, but some CSV files have a header
where each line starts with
#
. After skipping comment lines
this option causes csv//2 to
skip empty lines. Note that an empty line may not contain white space
characters (space or tab) as these may provide valid data.
- convert(+Boolean)
- If
true
(default), use name/2
on the field data. This translates the field into a number if possible.
- case(+Action)
- If
down
, downcase atomic values. If up
, upcase
them and if preserve
(default), do not change the case.
- functor(+Atom)
- Functor to use for creating row terms. Default is
row
.
- arity(?Arity)
- Number of fields in each row. This predicate raises a
domain_error(row_arity(Expected), Found)
if a row is found with different arity.
- match_arity(+Boolean)
- If
false
(default true
), do not reject CSV
files where lines provide a varying number of fields (columns). This can
be a work-around to use some incorrect CSV files.