Parsing 哈斯克尔->;解析后如何使用字符串

Parsing 哈斯克尔->;解析后如何使用字符串,parsing,haskell,Parsing,Haskell,你好 在用Haskell中的脚本进行解析之后,我得到了一个带有字符串列表“外观”的文件。但是,当我使用函数getContents或hGetContents调用文件内容时,即读取内容时,我得到的结果是:带行的字符串(示意图上我想要的是:“[“aaa”,“bbb”“ccc”]”->[“aaa”,“bbb”“ccc”])。我尝试了读取功能,但没有结果。我需要使用这些字符串列表将它们连接到一个列表中 我正在使用lines函数,但我认为它一次只能“工作”一行,不是吗? 我需要的是一个函数,用于验证一行中的

你好 在用Haskell中的脚本进行解析之后,我得到了一个带有字符串列表“外观”的文件。但是,当我使用函数getContentshGetContents调用文件内容时,即读取内容时,我得到的结果是:带行的字符串(示意图上我想要的是:[“aaa”,“bbb”“ccc”]->[“aaa”,“bbb”“ccc”])。我尝试了读取功能,但没有结果。我需要使用这些字符串列表将它们连接到一个列表中

我正在使用lines函数,但我认为它一次只能“工作”一行,不是吗? 我需要的是一个函数,用于验证一行中的一个元素是否在另一行上重复。如果我可以有一个字符串列表,那可能会更简单(但我有一行字符串,看起来像一个字符串列表) 当做 谢谢

我尝试过读取函数,但没有结果

刚刚测试过,工作正常:

Prelude> read "[\"aaa\",\"bbb\",\"ccc\"]" :: [String]
["aaa","bbb","ccc"]

请注意,您需要显式地给出返回类型,因为它不能根据参数的类型来确定。

我认为您要查找的函数是来自
数据的函数。List
(由
前奏重新导出)将多行字符串分解为字符串列表。

在我的理解中,你能做的就是

创建一个函数,用于接收列表列表,每个列表都是整个字符串的一行、传入的参数的一行,并检查一行中的元素是否出现在另一行中


然后,此函数传递整个字符串,并使用[lines][1]以行分隔。

为了帮助我们更好地回答此类问题,请始终至少提供一条错误消息。“没有结果”是非常模糊的,根据你的描述,问题几乎可以是任何东西。你能提供一些示例输入吗?我很难理解。您是否希望将文件的每一行都转换为字符串列表,以便最终得到is
[[String]]
?我有一个文件,其中包含在将来的会议中(参与者)大量题词的结果。此文件的结构为CSV(逗号分隔值)。在进行解析之后,文件的内容会变成这样:[“name1”email1@mail.com“,”电话1“,”年龄1“,”公司1“][”姓名2“,”email2@mail.com“,”电话2“,”年龄2“,”公司2“][”姓名1“,”email1@mail.com“,”电话1“,”年龄1“,”公司1“][”姓名3“,”email3@mail.com“,”电话3“,”年龄3“,”公司3“]现在我需要处理数据输入,最好的方法是:[“name1”email1@mail.com“,”电话1“,”年龄1“,”公司1“],[”姓名2“,”email2@mail.com“,”电话2“,”年龄2“,”公司2“],[”姓名1“,”email1@mail.com“,”电话1“,”年龄1“,”公司1“,[”姓名3“,”email3@mail.com“,”电话3“,”年龄3“,”公司3“]]类似::[[String]]。但我上面看到的是::String被拆分成多行。此字符串可以分为行-行函数-但每行[“namex”emailx@mail.com“,”phonex“,”agex“,”companyx“]是一个字符串。我需要将该行转换为字符串列表::[String]和文件的所有内容::[[String]]。如果我对每一行使用函数read(read line::[String]),我会因为缺少\而出错“例如:-检查是否有重复条目,以验证电子邮件地址是否在另一行中重复。-查看有多少参与者也属于某一特定公司。谢谢你,这个很好用;但是我需要得到文件的内容,它没有“\”(斜杠);如何从一行中读取(转换)?我的意思是,文件的所有内容都被视为一个字符串除以行(在每一行中,我们都有一些看起来像字符串列表但实际上是字符串)。感谢Cactus,我使用了lines函数,但我认为它一次只能“工作”一行,不是吗?我需要的是一个函数,用于验证一行中的一个元素是否在另一行上重复。如果我可以有一个字符串列表,那就更容易了(但是我有一行字符串看起来像一个字符串列表),但是我如何检查元素是否在另一行中;因为我一次只能处理一行?示例:\n first input=unlines eachLine\n其中allLines=lines input\n eachLine=map listStr allLines\n另一件事是,如果我创建一个函数,该函数接收一个列表(字符串),但我只能传递一个字符串(每行)(请注意,在上面的代码中\n是用于换行)