読者です 読者をやめる 読者になる 読者になる

GO言語のCSVの読み書き

imabari.hateblo.jp

imabari.hateblo.jp

これをGO言語で作成したいけど難しい

photo_name.csvで保存

,A1,A2,A3,A4,A5
1,あいうえお,かきくけこ,なにぬねの,あいうえお,かきくけこ
2,かきくけこ,たちつてと,,さしすせそ,さしすせそ
3,さしすせそ,,,,たちつてと
4,たちつてと,,,,なにぬねの
5,なにぬねの,,,,
package main

import (
    "encoding/csv"
    "log"
    "os"
)

func failOnError(err error) {
    if err != nil {
        log.Fatal("Error:", err)
    }
}

func main() {

    // 読み込み
    fr, err := os.Open("photo_name.csv")
    failOnError(err)

    defer fr.Close()

    r := csv.NewReader(fr)

    rows, err := r.ReadAll()
    failOnError(err)

    // 書き込み
    fw, err := os.Create("result.csv")
    failOnError(err)

    defer fw.Close()

    writer := csv.NewWriter(fw)

    header := rows[0][1:]

    for _, row := range rows[1:] {
        for i, item := range row[1:] {
            if item != "" {
                writer.Write([]string{item, header[i]})
                // writer.Write([]string{item, strconv.Itoa(j)})
            }
        }
    }
    writer.Flush()
}

次はサブコマンドをつける予定 naruto-io.hatenablog.com