如何在scala中创建csv文件时添加新列

时间:2018-04-10 02:46:56

标签: java scala csv

val csv_writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dest+"whatever"+".csv")))

for (x <-storeTimestamp ) {
  csv_writer.write(x + "\n")
}
csv_writer.close()  

有没有其他方法可以将2个字符串列表写入csv文件? 现在在我的代码中,我只在csv文件中写了1个字符串列表。如何从其他列表添加新列? 可以使用Bufferedwriter吗?

1 个答案:

答案 0 :(得分:1)

如果我理解了您的问题,那么您有一些CSV数据,并且您希望在将每行写入文件之前将新数据列添加到每行的末尾。

以下是我可以采取的措施。

// some pretend data
val origCSV = Seq("a,b,c", "d,e,f", "x,y,z")
val newCLMN = Seq("4X", "2W", "9A")

// put them together
val allData = origCSV.zip(newCLMN).map{case (a,b) => s"$a,$b\n"}

注意:zip只会将两个集合压缩在一起,直到它们用完一个或另一个。它的数据留在较大的集合中然后被忽略。如果这不合适,那么您可以尝试zipAll

写入文件。

import java.io.{File, FileWriter}
import util.Try

val writer = Try(new FileWriter(new File("filename.csv")))
writer.map{w => w.write(allData.mkString); w}
      .recoverWith{case e => e.printStackTrace(); writer}
      .map(_.close())

结果是......

>> cat filename.csv
a,b,c,4X
d,e,f,2W
x,y,z,9A
>>