我正在尋找最簡單的方法來將浮動列表中的CSV文件(浮動)。我不熟悉在Ocaml中通常閱讀文件,所以我不確定這種功能需要什麼。Ocaml CSV浮動列表
任何幫助或方向表示讚賞:)
編輯:我寧願不使用第三方CSV庫,除非我絕對必須的。
我正在尋找最簡單的方法來將浮動列表中的CSV文件(浮動)。我不熟悉在Ocaml中通常閱讀文件,所以我不確定這種功能需要什麼。Ocaml CSV浮動列表
任何幫助或方向表示讚賞:)
編輯:我寧願不使用第三方CSV庫,除非我絕對必須的。
如果你不想包括third-party library,並且您的CSV文件格式根本不帶引號或嵌入的逗號,你可以輕鬆地與標準庫函數解析。在循環或遞歸函數中使用read_line
依次讀取每行。要拆分每一行,請撥打Str.split_delim
(將程序與str.cma
或str.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程序,那麼您應該沒問題。
只要有一個包含逗號或引用字段的字段,就會中斷。 – 2012-04-22 09:56:01
我看過太多的csv閱讀代碼,認爲沒有引號等,但從來沒有持續很長時間。 – ygrek 2012-04-23 07:26:22
那麼,你有沒有在Google上輸入「Ocaml CSV」? – 2012-04-21 17:52:22
是的,實際上我希望不使用第三方庫來解決這個問題。因爲我只需要這一個功能,所以我不認爲在我的項目中包含其他人的圖書館是值得的。 – user1181523 2012-04-21 20:35:55
然後你應該看看第三方庫來了解它是如何完成的。 – 2012-04-22 09:55:32