我试图逐行读取文件并将每行中的所有单词存储到列表中,然后对其执行一些计算。
我正在做以下事情:
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)
}
只获取单词,没有数字或标点符号。但是,它只给出了列表中的单个单词作为输出,而不是行中的单词列表。为什么会这样?
答案 0 :(得分:0)
var words_in_line = line.split("\\s+")
//words_in_line is an Array
您无法按Array
println(words_in_line)
试
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)
答案 1 :(得分:0)
当您执行getLines和flatMap时,结果是单个单词列表。如果您需要行中的单词列表,则需要将这两个调用分开:
for( line <- io.Source.fromFile("all.txt").getLines ) {
val words = w2.findAllIn(line)
println("this is")
println(words.mkString(" "))
}
答案 2 :(得分:-1)
var w3 = line.split("\\s")
w3.foreach(m -> println(m))