我有一个带列标题的csv.一列标题是"DATE".如果我想在DATE之前生成两个CSV并且在/包括DATE之后有没有一种方法可以在没有程序循环的情况下执行此操作?我注意到大多数列表函数都适合按行过滤.
我假设您已将数据解析为以下内容:
val myDoc = List(
List("ID", "NAME", "DATE", "DESC"),
List("1", "a", "1990", "x"),
List("2", "b", "1991", "y")
)
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用splitAt和unzip将列表拉开.请注意,我假设有很多关于数据的实际代码,我们要检查列表是非空的,并且标题实际上包含一"DATE"列.
def split(doc: Seq[Seq[String]]) = {
val i = doc.head.indexOf("DATE")
doc.map(_.splitAt(i)).unzip
}
Run Code Online (Sandbox Code Playgroud)
我们可以将它应用于我们的测试数据:
scala> val (b, a) = split(myDoc)
b: List[Seq[String]] = List(List(ID, NAME), List(1, a), List(2, b))
a: List[Seq[String]] = List(List(DATE, DESC), List(1990, x), List(1991, y))
Run Code Online (Sandbox Code Playgroud)
这对我来说很合理.
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |