我是Scala和编程的新手。 我如何使用Scala将列表写入.csv文件?
所以我有一个对象列表......
List[test] = List(test(Group1,lol,1,2,3),test(Group2,lel,4,5,6)....)
如何将其导出到包含4列的.csv,并且每行都具有对象的属性?
感谢任何帮助。
答案 0 :(得分:1)
案例类是Product
的实例,它提供了一种很好的方式来遍历所有字段.productIterator
。
这个想法是你将所有字段转换为字符串,然后转义反斜杠和双引号(如果有的话),然后将它们连接在一起,双引号并用逗号分隔,然后用新行粘贴所有内容:
list
.map {
_.productIterator
.map(_.toString)
.map(_.replaceAll("\\", "\\\\"))
.map(_.replaceAll("\"", "\\\""))
.mkString("\"", "\",\"", "\"")
}.mkString("\n")
答案 1 :(得分:0)
我建议使用现有的资料库:read more
使用SBT解决依赖关系:https://github.com/melrief/PureCSV
文件:
* ./build.sbt
* ./OutputCsv.scala
build.sbt
name := "parse-csv"
version := "1.0.0"
libraryDependencies ++= Seq("com.github.melrief" %% "purecsv" % "0.1.1")
OutputCsv.scala
import purecsv.safe._
object OutputCsv extends App {
case class Test(group: String, message: String, age: Int)
val tests = List(Test("Group1", "lol", 1), Test("Group2", "lel", 4))
println(tests.toCSV()) // just for debug purposes
tests.writeCSVToFileName("/tmp/example.csv", header=Some(Seq("group", "message", "age")))
}
sbt run
将执行文件