如何将文件每一行中的单词存储到列表 scala



我正在尝试逐行读取文件并将每行中的所有单词存储到列表中,然后对其执行一些计算。

我正在执行以下操作:

for(line <- Source.fromFile("file1.txt").getLines())
 {
   var words_in_line = line.split("\s+")
   println(words_in_line)
}

但是,这会打印如下内容:

[Ljava.lang.String;@3535a92b
[Ljava.lang.String;@55f56157

这是怎麽?为什么它不在列表中的每行中打印单词?

编辑:

我现在正在这样做:

val w2 = """([A-Za-z])+""".r
 for(line <- Source.fromFile("/Users/Martha/Desktop/file1.txt").getLines.flatMap(w2.findAllIn))
 {
   println("this is")
   println(line)
   var w1 = line.split("\s+")
   //var w2 = w1.deep.mkString(" ")
   var w3 = line.split("\s").toList
   println(w3)
 }

仅获取单词,而不获取数字或标点符号。但是,它只给了我列表中的单个单词作为输出,而不是行中的单词列表。为什么会这样?

var words_in_line = line.split("\s+")
//words_in_line is an Array

您无法按println(words_in_line)打印Array

尝试

scala> var line="hey hello this is demo"
line: String = hey hello this is demo
scala> var words=line.split("\s+")
words: Array[String] = Array(hey, hello, this, is, demo)
scala> words map println
hey
hello
this
is
demo
res8: Array[Unit] = Array((), (), (), (), ())

你想要List(hey, hello, this, is, demo)那样

scala> var words=line.split("\s+").toList
words: List[String] = List(hey, hello, this, is, demo)
scala> println(words)
List(hey, hello, this, is, demo)

当你做getLines和flatMap时,结果是一个单个单词的列表。如果您需要行中的单词列表,则需要将这 2 个调用分开:

for( line  <- io.Source.fromFile("all.txt").getLines ) {
   val words = w2.findAllIn(line)
   println("this is")
   println(words.mkString(" "))
 }
var w3 = line.split("\s")
w3.foreach(m -> println(m))

最新更新