【发布时间】:2010-11-12 13:37:18
【问题描述】:
我有一个包含以下内容的文件:
(Float,Float,Float)"sometext"
(Float,Float,Float)"sometext"
(Float,Float,Float)"sometext"
...
...
我希望我的程序从文件中读取一行,将 (Float,Float,Float) 放入三元组,将“sometext”放入一个字符串,并将所有这些都放在一个新的数据类型下,这样整个事情就会看起来像这样:
SomeDataType (Float,Float,Float) "sometext"
到目前为止我得到了这个:
readFromDisc filePath = do
fileHandle <- openFile "/tmp/lala.txt" ReadMode
contents <- hGetContents fileHandle
putStrLn $ readOneLine contents
如果文件包含这个:
(5.0,6.0,7.0)"faraway"
(8.0,9.0,0.0)"holdon"
我明白了:
"(5.0,6.0,7.0)\"faraway\""
现在,因为我把它作为一个字符串,我正在考虑使用
breakInput input = break (=='"') input
要得到这个:
("(5.0,6.0,7.0)","\"faraway\"")
这是一对字符串,我打算用一些东西来解析三元组和其中的文本,但感觉都不对。
有没有更好的方法来做到这一点?
【问题讨论】:
标签: parsing haskell file-io io