Ocaml CSV到浮动列表

Ocaml CSV到浮动列表,csv,ocaml,Csv,Ocaml,我正在寻找将CSV文件(浮动)转换为浮动列表的最简单方法。我不太熟悉在Ocaml中读取文件,所以我不确定这类函数需要什么 感谢您的帮助或指导:) 编辑:除非迫不得已,否则我不想使用第三方CSV库。如果您不想包含,并且您的CSV文件的格式没有引号或嵌入逗号,您可以使用标准库函数轻松解析它们。在循环或递归函数中使用read\u line,依次读取每一行。要拆分每一行,请调用Str.split_delim(将您的程序链接到Str.cma或Str.cmxa)。调用字符串的float\u将每列解析为一个f

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

感谢您的帮助或指导:)


编辑:除非迫不得已,否则我不想使用第三方CSV库。

如果您不想包含,并且您的CSV文件的格式没有引号或嵌入逗号,您可以使用标准库函数轻松解析它们。在循环或递归函数中使用
read\u line
,依次读取每一行。要拆分每一行,请调用
Str.split_delim
(将您的程序链接到
Str.cma
Str.cmxa
)。调用字符串的
float\u
将每列解析为一个float

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

请注意,如果您的字段包含引号,则此选项将中断。在
split\u delim
返回的列表中的每个元素的开头和结尾,都可以很容易地去掉引号。但是,如果有嵌入的逗号,则需要适当的CSV解析器。如果您的数据是由法语地区的本地化程序生成的,则可能嵌入了逗号-法语使用逗号作为十进制分隔符(例如英语
3.14159
,法语
314159
)。用逗号而不是点来编写浮点数据不是一个好主意,但您可能会遇到这种情况(例如,一些电子表格CSV导出)。如果您的数据来自Fortran程序,您应该不会有问题。

那么,您是否有机会在Google中键入“Ocaml CSV”?是的,事实上,我希望在不使用第三方库的情况下解决此问题。因为我只需要这一个函数,所以我认为在我的项目中包含其他人的库是不值得的。然后你应该看看第三方库来了解它是如何完成的。一旦有一个包含逗号的字段,它就会中断,或者是一个引用的字段。我见过太多的csv读取代码,这些代码假设不会有引用等,但这种情况从未持续很久。