繁体   English   中英

Haskell将字符串解析为数组数组

[英]Haskell parse a string into array of arrays

我需要将一个字符串解析为数组数组。 字符串通过“ \\ n”字符在数组中拆分。 每个数组都用“,”或“;”分割 迹象。

例如: 4;5\\n6,7 -----> [[4,5][6,7]]

import qualified Text.Parsec as P (char,runP,noneOf,many,(<|>),eof)
import Text.ParserCombinators.Parsec
import Text.Parsec.String 
import Text.Parsec.Char
import Text.PrettyPrint.HughesPJ
import Data.Maybe

newtype CSV = CSV [Row] deriving (Show,Eq)
type Row = [String]

parseCSV :: Parser CSV
parseCSV = do
  return $ CSV (endBy (sepBy (many (noneOf ",\n")) (Text.Parsec.Char.char ',')) (Text.Parsec.Char.char '\n'))

runParsec :: Parser a -> String -> Maybe a
runParsec parser input = case P.runP parser () "" input of
    Left  _ -> Nothing
    Right a -> Just a

但是,当我尝试运行代码时,由于数据类型错误而导致错误

这是将runParsec parseCSV "4;5\\n6,7\\n"解析为Just (CSV [["4","5"],["6","7"]])

parseCSV :: Parser CSV
parseCSV = CSV <$> csv
  where
    csv = row `endBy` char '\n'
    row = many (noneOf ",;\n") `sepBy` oneOf ",;"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM