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

xuanbao • 1668 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
一组CSV 数据文件的便捷处理方式。 ### 举例: ### Reading CSV into a struct <pre box-sizing:="" font-family:="" liberation="" font-size:="" margin-top:="" margin-bottom:="" font-stretch:="" line-height:="" word-wrap:="" padding:="" overflow:="" background-color:="" border-radius:="" word-break:="">package mainimport (    &#34;io&#34;     &#34;log&#34;     &#34;github.com/go-hep/csvutil&#34;)func main() {    fname := &#34;testdata/simple.csv&#34;     tbl, err := csvutil.Open(fname)    if err != nil {         log.Fatalf(&#34;could not open %s: %v\n&#34;, fname, err)     }    defer tbl.Close()     tbl.Reader.Comma = &#39;;&#39;     tbl.Reader.Comment = &#39;#&#39;     rows, err := tbl.ReadRows(0, 10)    if err != nil {         log.Fatalf(&#34;could read rows [0, 10): %v\n&#34;, err)     }    defer rows.Close()    irow := 0     for rows.Next() {        data := struct {             I int             F float64             S string         }{}         err = rows.Scan(&amp;data)        if err != nil {             log.Fatalf(&#34;error reading row %d: %v\n&#34;, irow, err)         }     }     err = rows.Err()    if err != nil {         log.Fatalf(&#34;error: %v\n&#34;, err)     } }</pre> ### [ ](https://github.com/go-hep/csvutil#reading-csv-into-a-slice-of-values)Reading CSV into a slice of values <pre box-sizing:="" font-family:="" liberation="" font-size:="" margin-top:="" margin-bottom:="" font-stretch:="" line-height:="" word-wrap:="" padding:="" overflow:="" background-color:="" border-radius:="" word-break:="">package mainimport (    &#34;io&#34;     &#34;log&#34;     &#34;github.com/go-hep/csvutil&#34;)func main() {    fname := &#34;testdata/simple.csv&#34;     tbl, err := csvutil.Open(fname)    if err != nil {         log.Fatalf(&#34;could not open %s: %v\n&#34;, fname, err)     }    defer tbl.Close()     tbl.Reader.Comma = &#39;;&#39;     tbl.Reader.Comment = &#39;#&#39;     rows, err := tbl.ReadRows(0, 10)    if err != nil {         log.Fatalf(&#34;could read rows [0, 10): %v\n&#34;, err)     }    defer rows.Close()    irow := 0     for rows.Next() {        var (             I int             F float64             S string         )         err = rows.Scan(&amp;I, &amp;F, &amp;S)        if err != nil {             log.Fatalf(&#34;error reading row %d: %v\n&#34;, irow, err)         }     }     err = rows.Err()    if err != nil {         log.Fatalf(&#34;error: %v\n&#34;, err)     } }</pre> ### [ ](https://github.com/go-hep/csvutil#writing-csv-from-a-struct)Writing CSV from a struct <pre box-sizing:="" font-family:="" liberation="" font-size:="" margin-top:="" margin-bottom:="" font-stretch:="" line-height:="" word-wrap:="" padding:="" overflow:="" background-color:="" border-radius:="" word-break:="">package mainimport (    &#34;log&#34;     &#34;github.com/go-hep/csvutil&#34;)func main() {    fname := &#34;testdata/out.csv&#34;     tbl, err := csvutil.Create(fname)    if err != nil {         log.Fatalf(&#34;could not create %s: %v\n&#34;, fname, err)     }    defer tbl.Close()     tbl.Writer.Comma = &#39;;&#39;     err = tbl.WriteHeader(&#34;## a simple set of data: int64;float64;string\n&#34;)    if err != nil {         log.Fatalf(&#34;error writing header: %v\n&#34;, err)     }    for i := 0; i &lt; 10; i++ {        data := struct {             I int             F float64             S string         }{             I: i,             F: float64(i),             S: fmt.Sprintf(&#34;str-%d&#34;, i),         }         err = tbl.WriteRow(data)        if err != nil {             log.Fatalf(&#34;error writing row %d: %v\n&#34;, i, err)         }     }     err = tbl.Close()    if err != nil {         log.Fatalf(&#34;error closing table: %v\n&#34;, err)     } }</pre> ### [ ](https://github.com/go-hep/csvutil#writing-from-a-slice-of-values)Writing from a slice of values <pre box-sizing:="" font-family:="" liberation="" font-size:="" margin-top:="" margin-bottom:="" font-stretch:="" line-height:="" word-wrap:="" padding:="" overflow:="" background-color:="" border-radius:="" word-break:="">package mainimport (    &#34;log&#34;     &#34;github.com/go-hep/csvutil&#34;)func main() {    fname := &#34;testdata/out.csv&#34;     tbl, err := csvutil.Create(fname)    if err != nil {         log.Fatalf(&#34;could not create %s: %v\n&#34;, fname, err)     }    defer tbl.Close()     tbl.Writer.Comma = &#39;;&#39;     err = tbl.WriteHeader(&#34;## a simple set of data: int64;float64;string\n&#34;)    if err != nil {         log.Fatalf(&#34;error writing header: %v\n&#34;, err)     }    for i := 0; i &lt; 10; i++ {        var (             f = float64(i)             s = fmt.Sprintf(&#34;str-%d&#34;, i)         )         err = tbl.WriteRow(i, f, s)        if err != nil {             log.Fatalf(&#34;error writing row %d: %v\n&#34;, i, err)         }     }     err = tbl.Close()    if err != nil {         log.Fatalf(&#34;error closing table: %v\n&#34;, err)     } }</pre>
授权协议:
BSD
开发语言:
Google Go 查看源码»
操作系统:
跨平台
1668 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传