En Scala, comment lire un simple fichier CSV avec un en-tête dans sa première ligne?

la tâche est de rechercher un champ spécifique (par son numéro dans la ligne) par une valeur de champ clé dans un fichier CSV simple (juste des virgules comme séparateurs, pas de guillemets, jamais de virgule dans un champ), ayant un en-tête dans sa première ligne.

Utilisateur uynhjl a donné un exemple (mais avec un caractère différent comme séparateur):


val src = Source.fromFile("/etc/passwd")
val iter = src.getLines().map(_.split(":"))
// print the uid for Guest
iter.find(_(0) == "Guest") foreach (a => println(a(2)))
// the rest of iter is not processed
src.close()

la question dans ce cas est comment sauter une ligne d'en-tête de l'analyse?

30
demandé sur Don Branson 2010-09-01 03:51:56

3 réponses

Vous pouvez simplement utiliser drop:

val iter = src.getLines().drop(1).map(_.split(":"))

documentation:

def drop (n: Int) : Iterator[A]: Avance cet itérateur au-delà du premier n éléments, ou la longueur de la itérateur, selon le moindre des deux.

27
répondu Travis Brown 2010-08-31 23:58:32

Voici un CSV reader in Scala. Aïe.

Alternativement, vous pouvez rechercher un CSV reader in Java