2014-12-03 61 views
1

我想存儲在一個txt文件中的所有單詞,除了標點符號和數字,以列表?如何讀取文件並將單詞存儲到scala列表中?

我對scala很新,想不出如何去做?任何人都可以幫忙嗎?

編輯:

我這樣做是正確的,現在是這樣的:

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

     } 
     println(lst) 

它給我的LST =線的紅線,並表示重新分配到VAL。我不知道爲什麼:(

+0

拿一個來看看'scala.io.Source.fromFile(...)'。然後過濾標點和數字的內容。 – Brian 2014-12-03 22:55:59

+0

@布賴恩你能否在我的問題中看到編輯。我遇到了一些問題。 – 2014-12-03 23:07:46

回答

3

假設每行可以有多個單詞一個更好的解決辦法是

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

非常感謝! – 2014-12-04 00:13:29

1

您可以在最後的正則表達式和toList使用scala.io.Source與過濾

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

嗨,當我做var fillist = io.Source.fromFile(「/ Users/xyz/Desktop/file1.txt」)。 \t getLines()。 (_。matches(「[A-Za-z] +」))。 \t toList println(fillist) 我得到一個空的列表作爲輸出,爲什麼? – 2014-12-04 00:10:29

+0

看到我的更新,很難說沒有文件的內容,它應該工作,或者你需要更新正則表達式以匹配 – 2014-12-04 01:25:44

相關問題