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

时间:2015-05-18 18:55:25

标签: matlab go

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

txt = textscan(op,'%s%*s%s%*s');

谢谢!

1 个答案:

答案 0 :(得分:4)

如果您的文件基本上是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
}

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