[ “6”, “”,“[[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16, 17,18],[19,20,21,22,23,24],[25,26,27,28,29,30],[31,32,33,34,35,36]]“] 我必须从这6和[[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18], [19,20,21,22,23,24],[25,26,27,28,29,30],[31,32,33,34,35,36]] 我从文件中读取它看起来
6。 [[1,2,3,4,5,6],[7,8,9,10,11,12],[第13,14,15,16,17,18条],[19,20,21, 22,23,24],[25,26,27,28,29,30],[31,32,33,34,35,36]。
我尝试使用map并读取转换字符串,但它没有工作。 sry for english
答案 0 :(得分:2)
直接使用map
和read
的问题是,您的列表元素并非都具有相同的类型。第一个元素是(或更好:应该转换为)Int
,第二个元素是空列表,第三个元素是`[[Int]]
。
要将列表的第一个元素转换为Int
,您可以说read $ head xs :: Int
之类的内容,其中xs
是您的字符串列表。
第二个元素不能通过read直接转换,因为空字符串将导致异常(Prelude.read:no parse)。
要转换第三个元素(即整数列表列表),您可以简单地说出read $ xs !! 2 :: [[Int]]
之类的内容。
这不安全或优雅,但如果您的输入始终具有此结构,则应该有效。