Golang:如何从制表符分隔的文件中仅读取指定的列?

vvo*_*dcx 1 matlab go

在 Golang 中,我们有办法只读取某些列,例如 matlab 中的 textscan,例如:

txt = textscan(op,'%s%*s%s%*s');
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ain*_*r-G 5

如果您的文件基本上是一个 TSV 文件(即带有制表符而不是逗号的 CSV 文件),您可以对 stdlib 的 进行一个非常简单的包装csv.Reader

type FieldsReader struct {
    *csv.Reader
    fields []int
}

func (r *FieldsReader) Read() (record []string, err error) {
    rec, err := r.Reader.Read()
    if err != nil {
        return nil, err
    }

    record = make([]string, len(r.fields))
    for i, f := range r.fields {
        record[i] = rec[f]
    }

    return record, nil
}
Run Code Online (Sandbox Code Playgroud)

完整代码和使用示例:http : //play.golang.org/p/YcwOmsMX2B