Есть ли у Scala хороший способ разбить CSV по столбцам? - PullRequest
4 голосов
/ 25 октября 2011

У меня есть csv с заголовками столбцов.Один заголовок столбца - «ДАТА».Если я хочу сгенерировать два CSV, разбитых до DATE и после / включая DATE, есть ли способ сделать это без процедурного зацикливания?Я заметил, что большинство функций списка подходят для фильтрации по строкам.

1 Ответ

6 голосов
/ 25 октября 2011

Я предполагаю, что ваши данные уже проанализированы примерно так:

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

Это выглядит разумно для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...