GoParsing CSV files

Syntax

  • csvReader := csv.NewReader(r)
  • data, err := csvReader.Read()

Simple CSV parsing

Consider this CSV data:

#id,title,text
1,hello world,"This is a ""blog""."
2,second time,"My
second
entry."

This data can be read with the following code:

// r can be any io.Reader, including a file.
csvReader := csv.NewReader(r)
// Set comment character to '#'.
csvReader.Comment = '#'
for {
    post, err := csvReader.Read()
    if err != nil {
        log.Println(err)
        // Will break on EOF.
        break
    }
    fmt.Printf("post with id %s is titled %q: %q\n", post[0], post[1], post[2])
}

And produce:

post with id 1 is titled "hello world": "This is a \"blog\"."
post with id 2 is titled "second time": "My\nsecond\nentry."
2009/11/10 23:00:00 EOF

Playground: https://play.golang.org/p/d2E6-CGGIe.