Golang写新的CSV列

时间:2018-05-19 03:22:09

标签: csv go slice

我在Go中将两组数据写入一个CSV。现在,使用csv.NewWriter,我可以将它们写入相同的列。这不是理想的,我希望它们并排,相邻列中的第二个数据集。这就是我现在正在做的事情:

    csvOut, _ := os.Create("Summary.csv")
    writer := csv.NewWriter(csvOut)

    for _, value := range dataset1 {
            writer.Write(value)
    }
    writer.Flush()
    for _, value := range dataset2 {
            writer.Write(value)
    }
    writer.Flush()

我知道普通作家有一些偏移选项,csv作家有类似的东西吗?

1 个答案:

答案 0 :(得分:2)

循环遍历源数据集记录。连接每个数据集的记录以创建输出记录。将输出记录写入文件。

csvOut, _ := os.Create("Summary.csv")
writer := csv.NewWriter(csvOut)

var record []string  // declare record outside loop to reduce allocations
for i := range dataset1 {
        record = append(record[:0], dataset1[i]...) // copy data set 1 to beginning of output record
        record = append(record, dataset2[i]...) // append data set 2 to output record
        writer.Write(record)
}
writer.Flush()

此代码假定len(dataset1) == len(dataset2)。如果不是这样,那么根据应用程序要求修改代码(添加空值,截断为更短的数据集,......)