第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何在 Go 中使用 CSV 讀取不同的字段行?

如何在 Go 中使用 CSV 讀取不同的字段行?

Go
慕俠2389804 2022-08-24 20:15:23
我想從文件中讀取數(shù)據(jù)。但文件在文件末尾有不同的字段。我也想提取這些線,當(dāng)遇到.我怎么能這樣做。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)    }}我的預(yù)期輸出:[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 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

當(dāng)返回時(shí),您仍然在變量中獲得(解析的)行,因此只需打印該行即可。這記錄在 Reader.Read()中:csv.ErrFieldCountrecord

如果記錄具有意外數(shù)量的字段,則 Read 會返回該記錄以及錯(cuò)誤 ErrFieldCount。

并且不要使用日志。Fatal() 在終止應(yīng)用時(shí)打印消息。

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上嘗試一下。


查看完整回答
反對 回復(fù) 2022-08-24
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號