我刚刚开始使用Scala并且来自Python.
我想读一个'|' 分隔文件并保留表的结构.假设我有一个包含以下内容的文件:
1|2|3|4
5|6|7|8
9|10|11|12
Run Code Online (Sandbox Code Playgroud)
我想要一个返回如下结构的函数:
List(List(1, 2, 3, 4), List(5, 6, 7, 8), List(9, 10, 11, 12))
Run Code Online (Sandbox Code Playgroud)
到目前为止我的代码(由于类型不匹配而无效):
import scala.io.Source
def CSVReader(absPath:String, delimiter:String): List[List[Any]] = {
println("Now reading... " + absPath)
val MasterList = Source.fromFile(absPath).getLines().toList
return MasterList
}
var ALHCorpus = "//Users//grant//devel//Scala-codes//ALHCorpusList"
var delimiter = "|"
var CSVContents = CSVReader(ALHCorpus, delimiter)
Run Code Online (Sandbox Code Playgroud)
我会使用CSV库来做这种事情.当我不得不做类似的事情时,我使用了scala-csv.
如果你不想这样做,你不能简单地用你的分隔符拆分吗?也就是说,
import scala.io.Source
def CSVReader(absPath:String, delimiter:String): List[List[Any]] = {
println("Now reading... " + absPath)
val MasterList = Source.fromFile(absPath).getLines().toList map {
// String#split() takes a regex, thus escaping.
_.split("""\""" + delimiter).toList
}
return MasterList
}
var ALHCorpus = "//Users//grant//devel//Scala-codes//ALHCorpusList"
var delimiter = "|" // I changed your delimiter to pipe since that's what's in your sample data.
var CSVContents = CSVReader(ALHCorpus, delimiter)
Run Code Online (Sandbox Code Playgroud)