csvutil CSV 数据文件的便捷处理方式 csvutil

xuanbao2016-09-16 16:00:12 • 1846 次点击    
这是一个分享于 2016-09-16 16:00:12 的项目,其中的信息可能已经有所发展或是发生改变。

一组CSV 数据文件的便捷处理方式。

举例:

Reading CSV into a struct

package mainimport (    "io"
    "log"

    "github.com/go-hep/csvutil")func main() {    fname := "testdata/simple.csv"
    tbl, err := csvutil.Open(fname)    if err != nil {
        log.Fatalf("could not open %s: %v\n", fname, err)
    }    defer tbl.Close()
    tbl.Reader.Comma = ';'
    tbl.Reader.Comment = '#'

    rows, err := tbl.ReadRows(0, 10)    if err != nil {
        log.Fatalf("could read rows [0, 10): %v\n", err)
    }    defer rows.Close()    irow := 0
    for rows.Next() {        data := struct {
            I int
            F float64
            S string
        }{}
        err = rows.Scan(&data)        if err != nil {
            log.Fatalf("error reading row %d: %v\n", irow, err)
        }
    }
    err = rows.Err()    if err != nil {
        log.Fatalf("error: %v\n", err)
    }
}

[

](https://github.com/go-hep/csvutil#reading-csv-into-a-slice-of-values)Reading CSV into a slice of values

package mainimport (    "io"
    "log"

    "github.com/go-hep/csvutil")func main() {    fname := "testdata/simple.csv"
    tbl, err := csvutil.Open(fname)    if err != nil {
        log.Fatalf("could not open %s: %v\n", fname, err)
    }    defer tbl.Close()
    tbl.Reader.Comma = ';'
    tbl.Reader.Comment = '#'

    rows, err := tbl.ReadRows(0, 10)    if err != nil {
        log.Fatalf("could read rows [0, 10): %v\n", err)
    }    defer rows.Close()    irow := 0
    for rows.Next() {        var (
            I int
            F float64
            S string
        )
        err = rows.Scan(&I, &F, &S)        if err != nil {
            log.Fatalf("error reading row %d: %v\n", irow, err)
        }
    }
    err = rows.Err()    if err != nil {
        log.Fatalf("error: %v\n", err)
    }
}

[

](https://github.com/go-hep/csvutil#writing-csv-from-a-struct)Writing CSV from a struct

package mainimport (    "log"

    "github.com/go-hep/csvutil")func main() {    fname := "testdata/out.csv"
    tbl, err := csvutil.Create(fname)    if err != nil {
        log.Fatalf("could not create %s: %v\n", fname, err)
    }    defer tbl.Close()
    tbl.Writer.Comma = ';'

    err = tbl.WriteHeader("## a simple set of data: int64;float64;string\n")    if err != nil {
        log.Fatalf("error writing header: %v\n", err)
    }    for i := 0; i < 10; i++ {        data := struct {
            I int
            F float64
            S string
        }{
            I: i,
            F: float64(i),
            S: fmt.Sprintf("str-%d", i),
        }
        err = tbl.WriteRow(data)        if err != nil {
            log.Fatalf("error writing row %d: %v\n", i, err)
        }
    }

    err = tbl.Close()    if err != nil {
        log.Fatalf("error closing table: %v\n", err)
    }
}

[

](https://github.com/go-hep/csvutil#writing-from-a-slice-of-values)Writing from a slice of values

package mainimport (    "log"

    "github.com/go-hep/csvutil")func main() {    fname := "testdata/out.csv"
    tbl, err := csvutil.Create(fname)    if err != nil {
        log.Fatalf("could not create %s: %v\n", fname, err)
    }    defer tbl.Close()
    tbl.Writer.Comma = ';'

    err = tbl.WriteHeader("## a simple set of data: int64;float64;string\n")    if err != nil {
        log.Fatalf("error writing header: %v\n", err)
    }    for i := 0; i < 10; i++ {        var (
            f = float64(i)
            s = fmt.Sprintf("str-%d", i)
        )
        err = tbl.WriteRow(i, f, s)        if err != nil {
            log.Fatalf("error writing row %d: %v\n", i, err)
        }
    }

    err = tbl.Close()    if err != nil {
        log.Fatalf("error closing table: %v\n", err)
    }
}
Latest commit to the undefined branch on unknown
Download as zip
授权协议:
BSD
开发语言:
Google Go 查看源码»
操作系统:
跨平台
1846 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传