如何读取文件并将单词存储到scala中的列表?

时间:2014-12-03 22:49:41

标签: scala

我试图将txt文件中的所有字词(标点符号和数字除外)存储到列表中?

我对scala很新,并且无法弄清楚如何做到这一点?有人可以帮忙吗?

编辑:

我现在这样做:

for(line <- Source.fromFile("src/stop_words.txt").getLines())
      {
      //println(line)
      lst = line

      }
      println(lst)

它给了我一条关于lst = line的红线,并说要重新分配给一个val。我不知道为什么:(

2 个答案:

答案 0 :(得分:3)

假设每行可以有多个单词,则更好的解决方案是

val words = """([A-Za-z])+""".r
val all = io.Source.fromFile("path/to/file.txt").getLines.flatMap(words.findAllIn).toList

答案 1 :(得分:1)

你可以使用scala.io.Source和regex过滤器以及最后的toList

io.Source.fromFile("path/to/file.txt").
  getLines().
  filter(_.matches("[A-Za-z]+")).
  toList

<强> 更新

你的档案里面有什么?这个简单的代码按预期工作

val list = io.Source.fromBytes(
    """aaa
      |bbb
      |123
      |.-ddg
      |AZvb
    """.stripMargin.toArray.map(_.toByte)).
    getLines().
    filter(_.matches("[A-Za-z]+")).
    toList

  println(list)

输出:

List(aaa, bbb, AZvb)