我可以在Haskell中使用分隔符拆分列表吗?

我可以在Haskell中使用分隔符拆分列表吗?,haskell,Haskell,我有一个文本文件,其中包含以下内容: 1 kg g 5000 m km 98.6 f c 我应该读取文件,将第一个单元的数字转换为第二个单元的数字,并将输出写入另一个文本文件,因此最终结果应该是: 1000 5 37 到目前为止,我的代码是: import System.IO import Control.Monad main = do contents <- readFile "Readings.txt" let ls = lines con

我有一个文本文件,其中包含以下内容:

1 kg g
5000 m km
98.6 f c
我应该读取文件,将第一个单元的数字转换为第二个单元的数字,并将输出写入另一个文本文件,因此最终结果应该是:

1000
5
37
到目前为止,我的代码是:

import System.IO  
import Control.Monad

main = do
    contents <- readFile "Readings.txt"
    let ls = lines contents
    print $ ls


    when (length contents > 0) $
        writeFile "Outputs.txt" contents
目前,我正在尝试将列表ls按空格分割,这样我就可以让行中的每个元素都单独存在。 我的思维过程正确吗?或者我可以用更好的方法来处理这个问题吗?

标准单词函数将在空格上拆分:

> words "1 kg g"
["1","kg","g"]
对于其他分隔符,有来自拆分库的Data.List.Split模块

要从DOS格式的文本文件中删除\r,请使用以下内容而不是readFile:

标准单词功能将在空格上拆分:

> words "1 kg g"
["1","kg","g"]
对于其他分隔符,有来自拆分库的Data.List.Split模块

要从DOS格式的文本文件中删除\r,请使用以下内容而不是readFile:


Word拆分您在代码中手动输入的字符串。至少这是我的理解。我想拆分列表中的字符串。您可以对任何字符串值应用单词。如果你有一个字符串列表,你可以在上面映射单词:映射单词[foo-bar,12]=[[foo-bar],[1,2]]。单词和行非常相似:前者在空白处分开,后者在换行处分开。但是,它们处理各自分隔符连续出现的方式有所不同:第1\n\n2行==[1,2],而单词1\n\n2==[1,2]。单词拆分您在代码中手动输入的字符串。至少这是我的理解。我想拆分列表中的字符串。您可以对任何字符串值应用单词。如果你有一个字符串列表,你可以在上面映射单词:映射单词[foo-bar,12]=[[foo-bar],[1,2]]。单词和行非常相似:前者在空白处分开,后者在换行处分开。但是,它们处理各自分隔符连续出现的方式不同:第1\n\n2行==[1,2],而单词1\n\n2==[1,2]。
main = done
    handle <- openFile "Readings.txt"
    hSetNewlineMode handle universalNewlineMode
    contents <- hGetContents handle
    ...