gpt4 book ai didi

parsing - Haskell:如何使用 attoparsec 从 ByteString 读取嵌套列表

转载 作者:行者123 更新时间:2023-12-02 21:44:00 25 4
gpt4 key购买 nike

我有一个带有嵌套列表的文本文件(约 300 MB 大),与此类似:

[[4, 9, 11, 28, 30, 45, 55, 58, 61, 62, 63, 69, 74, 76, 77, 82, 87, 92, 93, 94, 95], [4, 9, 11, 28, 30, 45, 55, 58, 61, 62, 63, 69, 74, 76, 77, 82, 87, 92, 93, 94],[4, 9, 11, 28, 30, 45, 55, 58, 61, 62, 63, 69, 74, 76, 77, 82, 85, 87, 92, 93, 94, 95]]

这是我将文件读入 haskell Integer 列表的程序:

import qualified Data.ByteString as ByteStr

main :: IO ()

-- HOW to do the same thing but using ByteStr.readFile for file access?
main = do fContents <- readFile filePath
let numList = readNums fContents
putStrLn (show nums)

这适用于小文本文件,但我想使用ByteString来快速读取文件。我发现 ByteString 没有 read 函数,您应该在 attoparsec 中编写自己的解析器,因为它支持解析 ByteString。

如何使用 attoparsec 解析嵌套列表?

最佳答案

数据似乎是JSON格式,因此您可以使用Data.Aeson decode函数,该函数适用于ByteString

import qualified Data.ByteString.Lazy as BL
import Data.Aeson
import Data.Maybe

main = do fContents <- BL.readFile filePath
let numList = decode fContents :: Maybe [[Int]]
putStrLn (show $ fromJust numList)

关于parsing - Haskell:如何使用 attoparsec 从 ByteString 读取嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19898602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com