- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有嵌套列表的文本文件(约 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/
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 3年前关闭。 Improve this questi
我想,只是为了了解一些关于 Iteratees 的知识,使用 Data.Iteratee 和 Data.Attoparsec.Iteratee 重新实现我制作的一个简单的解析器。不过,我很难过。下面我
我被 attoparsec 困住了,我无法返回关于它是“嵌入式类型”的值。 我试图解析一个文件: type value type value ... 例如: 0 -- code for a strin
我正在使用 Attoparsec,并且我想在整个解析任务中跟踪用户状态值。 我熟悉 Parsec 的一元函数 getState、putState 和修改状态,但我似乎无法在 Attoparsec 中找
我正在尝试在第 5 列中使用 JSON 制作适合导入到 mongoDB 的大型 TSV 文件。特别是我想将顶级和仅顶级关键字段更改为 _id。这是我目前所拥有的,它似乎有效但速度很慢: {-# LAN
假设有一个数据结构表示一个文本,里面有评论。 data TWC = T Text TWC -- text | C Text TWC -- comment | E -- end deri
我正在使用据说默认回溯的 Attoparsec。但是,以下行: parseOnly (string "foo" *> many1 anyChar manyTill1 p e = (:) p m
我正在尝试用一个函数来扩充 Haskell 的 Attoparsec 解析器库 takeRegex :: Regex -> Parser ByteString 使用其中一种正则表达式实现。 (动机:好
是否有一些“简单”的方法(例如我在 Attoparsec 或其他一些库中缺少的东西)将定义的 Attoparsec 解析器从 ByteString 解析为从 Text 解析的解析器? 例如我有: im
Attoparsec提供了至少消耗一个字符的函数 takeWhile1。 但是,skipWhile 没有类似的东西。如何实现这个函数skipWhile1? 注意:这个问题故意表现出没有研究工作,因为它
我正在将一些使用 Parsec 的功能 Haskell 代码转换为使用 Attoparsec,希望获得更好的性能。我已经进行了更改并且所有内容都已编译,但我的解析器无法正常工作。 我正在解析一个由各种
我的类型: data Test = Test { a :: Int, b :: Int } deriving (Show) 我的解析器: testParser :: Parser Test tes
背景 我使用 attoparsec 编写了一个日志文件解析器。我所有较小的解析器都成功了,组成的最终解析器也是如此。我已通过 tests 确认了这一点。但我在使用解析的流执行操作时遇到了困难。 我尝试
我一直在编写 attoparsec 解析器,并且一直在寻找一种模式,我想将解析器转换为递归解析器(将它们与 monad 绑定(bind) >>= 运算符递归地组合)。 所以我创建了一个函数将解析器转换
我一直在编写一个 attoparsec 解析器来解析 Uniform Code for Units of Measure 的内容。调用 。它被定义为某个类(该类包括所有数字 0-9)中不以数字结尾的最
Attoparsec提供了至少消耗一个字符的函数 takeWhile1。 但是,skipWhile 没有类似的东西。如何实现这个函数skipWhile1? 注意:这个问题故意表现出没有研究工作,因为它
我正在使用 attoparsec 的内置解析器“double”和“number”来解析浮点值,我从不同的解析器得到不同的结果。 >parse number "8.918605790440055e-2"
attoparsec 0.72 有这个功能,但在后来的版本中似乎消失了: stringTransform :: (ByteString -> ByteString) -> ByteString ->
我有一个简单的基于 attoparsec 的 pdf parser .它工作正常,直到与 iteratee 一起使用。 当输入的大小超过缓冲区大小时。 import qualified Data.By
我使用 attoparsec 编写了以下解析代码: data Test = Test { a :: Int, b :: Int } deriving (Show) testParser :
我是一名优秀的程序员,十分优秀!