2018年10月2日火曜日

GoでCSVファイルを読み込む

Package csvを使ってCSVファイルを読み込む例になります。

読み込むCSVファイルを準備する

文字列は、「"」で囲み要素内に「,」がある内容としてみました。
"name","age"
"hoge,fuga", 100

読み込んで見る

package main

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

func main() {

        // ファイルを開く
 file, err := os.Open("test.csv")
 if err != nil {
  log.Fatal(err)
 }

        // 開いたファイルの後始末
 defer file.Close()

        // CSVを読み込むためのReaderを生成
 reader := csv.NewReader(file)

 for {
                // 1行づつ読み込む
  record, err := reader.Read()
                // ファイルの末尾で処理終了
  if err == io.EOF {
   break
  }
  if err != nil {
   log.Fatal(err)
  }
  fmt.Println(record)
 }

}

出力結果

クォートが削除されて読み込まれ、要素内の「,」も正しく読み込まれていることがわかります。
[name age]
[hoge,fuga  100]