2014-12-04 58 views
0

我正在尝试逐行读取文件并将每行中的所有单词存储到列表中,然后对其执行一些计算。如何将文件的每一行中的单词存储到列表中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) 

} 

只得到的话,没有数字或标点符号。但是,它只给出列表中单个单词作为输出,而不是单词列表中的单词。这是为什么?

回答

0
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) 
+0

但是,这并不在单词列表的形式打印出来!第一个将它打印为单词,第二个将它打印成一个字符串。我想将它打印为List(abc,vdc,...) – 2014-12-04 05:16:21

+0

非常感谢!你能帮我多做一件事吗?你能否在这个问题上阅读我的编辑。我遇到了麻烦。 :( – 2014-12-04 05:35:07

0

当你做getLines和flatMap结果是单个别单词列表。如果您需要在该行的单词列表,你需要将这些2个呼叫分离:

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