You are looking at historical revision 16491 of this page. It may differ significantly from its current revision.
csv
Description
The csv library contains a procedure for parsing of comma-separated values (CSV) as described in RFC 4180. There are several differences with the RFC:
- The RFC prescribes CRLF standard network line breaks, but many CSV files have platform-dependent line endings, so this library accepts any sequence of CRs and LFs as a line break.
- The format of header lines is exactly like a regular record and the presence of a header can only be determined from the mime type. This library treats all lines as regular records.
- The formal grammar specifies that fields can contain only certain US ASCII characters, but the specification of the MIME type allows for other character sets. This library allow all characters in fields, except for the field delimiter character, CRs and LFs in unquoted fields.
- According to the RFC, the records all have to have the same length. This library allows variable length records.
- The delimiter character is specified by the user and can be a character other than comma, or an SRFI-14 character set.
Library Procedures
- <procedure>(make-parser [DELIMITER]) => PARSER</procedure>
Returns a CSV parsing procedure. Optional argument DELIMITER specifies the field delimiter (comma by default). DELIMITER can be a character, or an SRFI-14 character set. The returned procedure takes in a string and returns a list of the form:
((record STRING1 STRING2 ...) (record ... ))
where STRING represents the field values in a record.
Requires
Version History
- 1.0 Initial Release
License
Copyright 2009 Ivan Raikov and the Okinawa Institute of Science and Technology. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. A full copy of the GPL license can be found at <http://www.gnu.org/licenses/>.