2012-04-21 18 views
2

浮動小数点数のCSVファイルをフロートリストに変換する最も簡単な方法をお探しです。私はOcamlの一般的なファイルを読むことに慣れていないので、この種の機能が何を伴うのかは分かりません。Ocaml CSVから浮動小数点リスト

すべてのヘルプや方向が理解される:)

編集:私は、私は絶対に持っていない限り、第三者CSVライブラリを使用しないと思いますが。

答えて

3
+1

Googleに「Ocaml CSV」と入力しましたか? –

+1

はい、実際にはサードパーティ製のライブラリを使用せずにこの問題を解決したいと考えています。私はこの1つの機能しか必要としないので、自分のプロジェクトに他の人の図書館を含める価値はないと思いました。 – user1181523

+1

それから、サードパーティのライブラリを見て、それがどのようになっているのかを知るべきです。 –

2

あなたが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プログラムから出てきたら、大丈夫です。

+2

これは、カンマまたは引用符付きのフィールドを含むフィールドがあるとすぐに解除されます。 –

+0

引用符はありませんが、長続きすることはないと思っていたcsvの読み込みコードがあまりにも多く見受けられました。 – ygrek

関連する問題