Ocaml CSV到浮动列表

时间:2012-04-21 17:49:46

标签: csv ocaml

我正在寻找将CSV文件(浮动)转换为浮动列表的最简单方法。我不太熟悉在Ocaml中读取文件,所以我不确定这种功能需要什么。

感谢任何帮助或指示:)

编辑:我不想使用第三方CSV库,除非我绝对必须这样做。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

如果您不想包含third-party library,并且您的CSV文件只是简单地格式化,没有引号或嵌入的逗号,您可以使用标准库函数轻松解析它们。在循环或递归函数中使用read_line依次读取每一行。要分割每一行,请致电Str.split_delim(将您的计划与str.cmastr.cmxa相关联)。调用float_of_string将每列解析为浮点数。

let comma = Str.regexp ","
let parse_line line = List.map float_of_string (Str.split_delim comma line)

请注意,如果您的字段包含引号,则会中断此操作。在split_delim返回的列表的每个元素的开头和结尾处删除引号很容易。但是,如果有嵌入式逗号,则需要一个合适的CSV解析器。如果您的数据是由法语区域设置中的本地化程序生成的,则可能嵌入了逗号 - 法语使用逗号作为小数分隔符(例如英语3.14159,法语3,14159)。使用逗号而不是点来编写浮点数据并不是一个好主意,但这可能是您可能遇到的问题(例如,某些电子表格CSV导出)。如果您的数据来自Fortran程序,那么您应该没问题。