Как мне обработать CSV-файл в scala, чтобы я мог разделить его строки на массивы? - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь обработать файл csv длиной 300+ строк в scala в массив.

Файл csv выглядит так:

20200522T0600,26.852346
20200522T0700,26.862345
20200522T0800,27.262346
20200522T0900,28.562346
20200522T1000,29.472345
20200522T1100,29.432346

Это дата, время и температура. Мне нужно поместить (datetime) и (temperature) в отдельные параллельные массивы, я должен вычислить средние температуры позже, но я могу это сделать. Я просто не знаю, как их прочитать в этих двух массивах. Я знаю, что мне нужно использовать fromFile () и .getLines для получения строк, но я застрял с частью массива.

Я пробовал это

object Weather {

    def main(args: Array[String]){
        val source = Source.fromFile("Weather.csv")
        var matrix :Array[String] = Array.empty
        for(line <- source.getLines.drop(10)){
            val cols = line.split(",").map(_.trim).toArray
            matrix = :+ cols
            println(matrix)
        }

    }
}

, но я получил этот результат

[error]             matrix = :+ cols
[error]                         ^
[error] one error found
[error] (Compile / compileIncremental) Compilation failed
[error] Total time: 0 s, completed Jul 9, 2020 6:26:56 AM

Заранее спасибо

1 Ответ

0 голосов
/ 09 июля 2020

Во-первых, split() возвращает массив, поэтому .toArray не требуется. И = :+ не Scala, так что далеко не уедешь.

Попробуйте это.

val lines = io.Source
              .fromFile("Weather.csv")  //open file
              .getLines                 //Iterator[String]
              .drop(10)                 // ?
              .map(_.split(","))        //Iterator[Array[String]]

Добавьте .toList в конце, если вам нужно загрузить все в память.

Чтобы увидеть результат.

lines.foreach(println)

Или вам, возможно, придется сделать что-то вроде этого.

lines.foreach(arr => println(arr.mkString("Array(", ",", ")")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...