HaskellのCSV読み込み
利用ライブラリ
インポート
Prelude> import Text.CSV
1行読み込み
Prelude Text.CSV> parseCSVTest "aaa,bbb" [["aaa","bbb"]] Prelude Text.CSV> parseCSVTest "aaa,bbb,ccc" [["aaa","bbb","ccc"]]
トリムはしない
Prelude Text.CSV> parseCSVTest "aaa,bbb, ccc" [["aaa","bbb"," ccc"]]
複数行読み込み
Prelude Text.CSV> parseCSVTest "aaa,bbb, ccc\naaa," [["aaa","bbb"," ccc"],["aaa",""]] Prelude Text.CSV> parseCSVTest "aaa,bbb, ccc\naaa,,bbb" [["aaa","bbb"," ccc"],["aaa","","bbb"]]
出力
Prelude Text.CSV> printCSV [["1","2","3"],["4","5"],["6"]] "\"1\",\"2\",\"3\"\n\"4\",\"5\"\n\"6\""
読み込み件数取得
Prelude Text.CSV> parseCSVFromFile "./data/UNdata_Export_pork.csv" >>= \x -> either (\x -> return 0) (return . length) x 1376
10行目出力
Prelude Text.CSV> parseCSVFromFile "./data/UNdata_Export_pork.csv" >>= \x -> return $ either (\x -> []) (\x -> x !! 10) x ["Albania","2009","Thousand metric tons","0.63",""]
全件出力
Prelude Text.CSV> either (\x -> putStrLn "error") (mapM_ (putStrLn . show)) =<< parseCSVFromFile "./data/UNdata_Export_pork.csv" ["Country or Area","Year","Unit","Value","Value Footnotes"] ["Albania","2013","Mil. USD","3.86207176515949",""] ["Albania","2013","Thousand metric tons","0.8",""]