Я предполагаю, что ваши данные уже проанализированы примерно так:
val myDoc = List(
List("ID", "NAME", "DATE", "DESC"),
List("1", "a", "1990", "x"),
List("2", "b", "1991", "y")
)
Теперь мы можем использовать splitAt
и unzip
, чтобы разделить список. Обратите внимание, что я много предполагаю о данных - в реальном коде мы бы хотели проверить, что список не пуст и что заголовок на самом деле содержит столбец "DATE"
.
def split(doc: Seq[Seq[String]]) = {
val i = doc.head.indexOf("DATE")
doc.map(_.splitAt(i)).unzip
}
Мы можем применить его к нашим данным испытаний:
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))
Это выглядит разумно для меня.