(フロートの) CSV ファイルをフロート リストに変換する最も簡単な方法を探しています。私は Ocaml での一般的なファイルの読み取りに精通していないので、この種の機能が何を意味するのかわかりません。
どんな助けや指示も大歓迎です:)
編集:絶対に必要でない限り、サードパーティの CSV ライブラリを使用しないことをお勧めします。
サードパーティ ライブラリを含めたくない場合で、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 パーサーが必要です。フランス語のロケールでローカライズされたプログラムによってデータが生成された場合、カンマが埋め込まれている可能性があります — フランス語では小数点記号としてカンマが使用されます (例: English 3.14159
、 French 3,14159
)。浮動小数点データをドットの代わりにコンマで書くのは良い考えではありませんが、遭遇する可能性があります (スプレッドシートの CSV エクスポートなど)。データが Fortran プログラムから出力される場合は、問題ありません。