Scala_beginner
Scala_beginner

Reputation: 11

Convert csv file to map

I have a csv file containing a list of abbreviations and their full values such that the file looks like the below

original,mappedValue
bbc,britishBroadcastingCorporation
ch4,channel4

I want to convert this csv file into a Map such that it is of the form

val x:Map[String,String] = Map("bbc"->"britishBroadcastingCorporation", "ch4"->"channel4")

I have tried using the below:

Source.fromFile("pathToFile.csv").getLines().drop(1).map(_.split(","))

but this leaves me with an Iterator[Array[String]]

Upvotes: 0

Views: 235

Answers (1)

Ramachandran.A.G
Ramachandran.A.G

Reputation: 4948

You are close , split provides an array. You have to convert it into a tuple and then to a map

Source.fromFile("/home/agr/file.csv").getLines().drop(1).map(csv=> (csv.split(",")(0),csv.split(",")(1))).toMap
res4: scala.collection.immutable.Map[String,String] = Map(bbc -> britishBroadcastingCorporation, ch4 -> channel4)

In real life , you will check for existance of bad rows and filtering out the array splits whose length is less than 2 or may be put that into another bin as bad data etc.

Upvotes: 1

Related Questions