将列表导出为.csv[Scala]
我对Scala和编程都是新手。 如何使用Scala将列表写入.csv文件 所以我有一个对象列表将列表导出为.csv[Scala],scala,list,export-to-csv,Scala,List,Export To Csv,我对Scala和编程都是新手。 如何使用Scala将列表写入.csv文件 所以我有一个对象列表 List[test] = List(test(Group1,lol,1,2,3),test(Group2,lel,4,5,6)....) 如何将其导出为具有4列的.csv,并且每行具有一个对象的属性 非常感谢您的帮助。我建议您使用现有的库: 使用SBT解析依赖项: 文件: */build.sbt */outputcv.scala build.sbt name := "parse-csv" versi
List[test] = List(test(Group1,lol,1,2,3),test(Group2,lel,4,5,6)....)
如何将其导出为具有4列的.csv,并且每行具有一个对象的属性
非常感谢您的帮助。我建议您使用现有的库:
使用SBT解析依赖项:
文件:
*
/build.sbt
*
/outputcv.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
将执行文件案例类是产品
的实例,它提供了一种很好的方法,可以像.productIterator
那样迭代所有字段
其思想是将所有字段转换为字符串,然后转义反斜杠和双引号(如果有),然后将它们全部连接在一起,双引号并用逗号分隔,然后用新行粘合所有字段:
list
.map {
_.productIterator
.map(_.toString)
.map(_.replaceAll("\\", "\\\\"))
.map(_.replaceAll("\"", "\\\""))
.mkString("\"", "\",\"", "\"")
}.mkString("\n")
这是很好的反馈!除了
sbt运行
部分,我已经管理了您提到的所有内容。我在这里使用IntelliJ,当运行代码时,我只得到import purecsv.safe.\u
defined module OutputCsv
,因此我认为它不会运行,因为有太多问题,即使在.csv MIME类型存在RFC的情况下,我强烈建议您使用维护良好的RFC驱动的本机Scala库kantan.csv,该库可以最佳地处理此问题: