MissingH-1.5.0.1: Large utility library
CopyrightCopyright (C) 2005-2011 John Goerzen
LicenseBSD-3-Clause
Stabilitystable
Portabilityportable
Safe HaskellSafe
LanguageHaskell2010

Data.CSV

Description

Haskell Parsec parsers for comma-separated value (CSV) files.

Written by John Goerzen, jgoerzen@complete.org

Synopsis

Documentation

csvFile :: CharParser st [[String]] Source #

Parse a Comma-Separated Value (CSV) file. The return value is a list of lines; each line is a list of cells; and each cell is a String.

Please note that CSV files may have a different number of cells on each line. Also, it is impossible to distinguish a CSV line that has a cell with no data from a CSV line that has no cells.

Here are some examples:

Input (literal strings)          Parses As (Haskell String syntax)
-------------------------------- ---------------------------------
1,2,3                            [["1", "2", "3"]]

l1                               [["l1"], ["l2"]]
l2

 (empty line)                    [[""]]

NQ,"Quoted"                      [["NQ", "Quoted"]]

NQ,"Embedded""Quote"             [["NQ", "Embedded\"Quote"]]

To parse a String, you might use:

import Text.ParserCombinators.Parsec
import Data.String.CSV
....
parse csvFile "" mystring

To parse a file, you might instead use:

do result <- parseFromFile csvFile "/path/to/file"

Please note that the result of parsing will be of type (Either ParseError [[String]]). A Left result indicates an error. For more details, see the Parsec information.

genCsvFile :: [[String]] -> String Source #

Generate CSV data for a file. The resulting string can be written out to disk directly.