将元组列表写入Scala中的文件

时间:2016-06-30 13:34:36

标签: scala

我在名为windData的变量中有一些数据,信息如下。

ListBuffer((2001-01-01T00:00:00.000+01:00,578,WIND projekt GmbH),
(2001-01-01T01:00:00.000+01:00,420,WIND projekt GmbH),....)

我需要将此数据写入csv文件。 我编写的代码

def printToFile(f: java.io.File)(op: java.io.PrintWriter => Unit) {
    val p = new java.io.PrintWriter(f)
    try { op(p) } finally { p.close() }
  }
 printToFile(new File("/Users/krishna/Experiment/Internship/wind.csv")) { p =>
    windData.foreach(p.println)
  }

输出

(2001-01-01T00:00:00.000+01:00,578,WIND projekt GmbH)
(2001-01-01T01:00:00.000+01:00,420,WIND projekt GmbH)

预期产出:

2001-01-01T00:00:00.000+01:00,578,WIND projekt GmbH
2001-01-01T01:00:00.000+01:00,420,WIND projekt GmbH

如何在一行之前和之后摆脱元组。

3 个答案:

答案 0 :(得分:2)

这适用于任何长度的元组列表 - 使用productIterator.mkString(",")将元组序列化为字符串而不显式访问每个字段:

printToFile(new File("/tmp/wind.csv")) { p =>
  windData.foreach(tuple => p.println(tuple.productIterator.mkString(",")))
}

答案 1 :(得分:0)

以下是一个例子:

scala> val d = ListBuffer((1,2,3),(4,5,6))
d: scala.collection.mutable.ListBuffer[(Int, Int, Int)] = ListBuffer((1,2,3), (4,5,6))

scala> d.foreach(x => print(x._1 + "," +  x._2 + "," +  x._3 + "\n"))

结果:

1,2,3
4,5,6

答案 2 :(得分:0)

你可以做到

windData.foreach { tuple => 
  println(tuple._1)
  println(tuple._2) 
}