Haskell ::将文本解析为List列表

Sir*_* DK 2 haskell list text-parsing

嗨,大家好,

我正在解析一个看起来像这样的文本文件:

114.474998474121 15.7440004348755 25.806999206543 -873 172 182 188 
114.46199798584 15.7419996261597 25.8799991607666 -1396 180 192 205 
Run Code Online (Sandbox Code Playgroud)

并希望它可以这样读:

[[114.475,15.744,25.807,-873.0,172.0,182.0,188.0],
[114.462,15.742,25.88,-1396.0,180.0,192.0,205.0]]
Run Code Online (Sandbox Code Playgroud)

目前我的文本解析代码没有给出.这是我的代码:

main = do
    text <- readFile "mytext.txt" 
    let
        pcVal = map read (words text) :: [Float]
    print pcVal
    return ()
Run Code Online (Sandbox Code Playgroud)

此代码将所有文本解析为单个列表,如下所示:

[114.475,15.744,25.807,-873.0,172.0,182.0,188.0,
114.462,15.742,25.88,-1396.0,180.0,192.0,205.0]
Run Code Online (Sandbox Code Playgroud)

我找不到如何将整行(在文本文件中)作为列表,并将第二行作为另一个列表直到文件末尾.感谢有人有这方面的经验.谢谢.

Dan*_*Dan 7

你可以使用这个lines功能; 例如map words $ lines text.

这也是帮助函数的好时机,即

let parse :: String -> [Float]
    parse line = map read $ words line
    pcVal = map parse $ lines text
Run Code Online (Sandbox Code Playgroud)