我想从文件中读取数据。但文件在文件末尾有不同的字段。我也想提取这些线,当遇到.我怎么能这样做。csvErrFieldCountpackage mainimport ( "encoding/csv" "fmt" "io" "log" "strings" "errors")func main() { in := `first_name,last_name,username"Rob","Pike",robKen,Thompson,ken"Robert","Griesemer"` r := csv.NewReader(strings.NewReader(in)) for { record, err := r.Read() if err == io.EOF { break } if err != nil { if errors.Is(err, csv.ErrFieldCount) { // fmt.Println("#", differentRow") log.Fatal("wrong fields") //TODO I want to pick it up here }else{ log.Fatal(err) } } fmt.Println(record) }}我的预期输出:[first_name last_name username][Rob Pike rob][Ken Thompson ken]# "Robert","Griesemer". <---- my expect line ...2009/11/10 23:00:00 wrong fields
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
当返回时,您仍然在变量中获得(解析的)行,因此只需打印该行即可。这记录在 Reader.Read()
中:csv.ErrFieldCount
record
如果记录具有意外数量的字段,则 Read 会返回该记录以及错误 ErrFieldCount。
并且不要使用日志。Fatal()
在终止应用时打印消息。
if err != nil {
if errors.Is(err, csv.ErrFieldCount) {
fmt.Println("#", record)
log.Println("wrong fields")
} else {
log.Fatal(err)
}
continue
}
通过此更改,输出就是您想要的:
[first_name last_name username]
[Rob Pike rob]
[Ken Thompson ken]
# [Robert Griesemer]
2009/11/10 23:00:00 wrong fields
在Go Playground上尝试一下。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消