Haskell的全功能CSV解析器?
任何人都可以推荐一种解析CSV文件的方法,并提供以下选项:Haskell的全功能CSV解析器?,haskell,csv,Haskell,Csv,任何人都可以推荐一种解析CSV文件的方法,并提供以下选项: 设置单元格/字段分隔符 设置记录结束/行终止符 设置字段的引号字符 支持UTF-8字符串 能够将内存中的CSV结构写回文件 我确实尝试过Text.CSV,但它非常简单,并且缺少上述大部分功能。 是否有更高级的CSV解析模块,或者我是否必须“从头开始”编写它,即使用Text.parsercompbinators?我不打算重新发明轮子 小心。我不能推荐一个现成的、打包好的Haskell CSV解析器,但我记得书中有一章,作者通过创建CS
- 设置单元格/字段分隔符
- 设置记录结束/行终止符
- 设置字段的引号字符
- 支持UTF-8字符串
- 能够将内存中的CSV结构写回文件
小心。我不能推荐一个现成的、打包好的Haskell CSV解析器,但我记得书中有一章,作者通过创建CSV解析器来演示
有关资料可在网上查阅;检查标题为“扩展示例:完整CSV解析器”的部分。快速搜索查找,它确实有可自定义的引号和分隔符。这是一个旧线程,但两者都有,如果不是全部的话,也有大部分您要查找的功能(不确定是否要重新写入文件)。这是一个黑客攻击。如果您的发行版没有提供软件包,您可以通过cabal安装,例如
$ cabal install cassava
它可以从CSV文件读取和写入(即解码/编码)记录
可以按如下方式设置字段分隔符:
import Data.Csv
import Data.Char -- ord
import qualified Data.ByteString.Lazy.Char8 as B
enc_opts = defaultEncodeOptions {
encDelimiter = fromIntegral $ ord '\t'
}
write_csv vector = do
B.putStr $ encodeWith enc_opts vector
目前,
Data.Csv
不提供其他编码/解码选项。有用于处理标题行的函数变体。按原样,行以CRLF终止,双引号用于引用,并假定为文本编码UTF8。值中的双引号用反斜杠引用,在“不必要”的地方省略引号。木薯在内存中工作,是非常简单的库,例如
encode [("John" :: Text, 27), ("Jane", 28)]
"John,27\r\nJane,28\r\n"
我认为仍然缺乏良好的csv库:
电子表格
使用字符串,而csv bytestring
不允许指定分隔符