Голанг Написать новую колонку CSV - PullRequest
0 голосов
/ 19 мая 2018

Я записываю два набора данных для одного CSV в Go.Прямо сейчас, используя 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 голосов
/ 19 мая 2018

Цикл по исходным записям набора данных.Объедините записи из каждого набора данных, чтобы создать выходную запись.Записать выходную запись в файл.

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).Если это не так, измените код в соответствии с требованиями приложения (добавьте пустые значения, обрежьте до более короткого набора данных, ...)

...