在保留一些结构的同时将.csv文件读入scala

Gra*_*D71 2 csv scala

我刚刚开始使用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)

Jac*_*eow 6

我会使用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)