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

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

Go 中的 CSV 解析器由于尾隨空格而中斷

Go 中的 CSV 解析器由于尾隨空格而中斷

Go
慕婉清6462132 2023-04-04 17:17:12
我們正在嘗試使用 Go 的 encoding/csv 包解析 csv 文件。這個(gè)特殊的 csv 有點(diǎn)特殊,每一行都有一個(gè)尾隨空格。當(dāng)嘗試使用帶引號(hào)的字段解碼此 csv 時(shí),包會(huì)中斷,因?yàn)樗枰獡Q行符、分隔符或引號(hào)。尾隨空格不是預(yù)期的。你會(huì)如何處理這個(gè)案子?您知道我們可以使用的另一個(gè)解析器嗎?編輯:f,err := os.Open("file.go")// err etc..csvr := csv.NewReader(f)csvr.Comma = csvDelimiterfor {   rowAsSlice, err := csvr.Read()   // Handle row and errors etc.}編輯 2:CSV 示例,注意尾隨空格!"RECORD_TYPE","COMPANY_SHORTNAME" "HDR","COMPANY_EXAMPLE" 
查看完整描述

1 回答

?
楊__羊羊

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

一種可能的解決方案是將源文件閱讀器包裝在自定義閱讀器中,該閱讀器的Read(...)方法會(huì)靜默地從底層閱讀器實(shí)際讀取的內(nèi)容中刪除尾隨空格。可以csv.Reader直接使用該類型。

例如:

type TrimReader struct{ io.Reader }


var trailingws = regexp.MustCompile(` +\r?\n`)


func (tr TrimReader) Read(bs []byte) (int, error) {

? // Perform the requested read on the given reader.

? n, err := tr.Reader.Read(bs)

? if err != nil {

? ? return n, err

? }


? // Remove trailing whitespace from each line.

? lines := string(bs[:n])

? trimmed := []byte(trailingws.ReplaceAllString(lines, "\n"))

? copy(bs, trimmed)

? return len(trimmed), nil

}


func main() {

? file, err := file.Open("myfile.csv")

? // TODO: handle err...


? csvr := csv.NewReader(TrimReader{file})


? for {

? ? record, err := csvr.Read()

? ? if err == io.EOF {

? ? ? break

? ? }

? ? fmt.Printf("LINE: record=%#v, err=%v\n", record, err)

? }

? // LINE: record=[]string{"RECORD_TYPE", "COMPANY_SHORTNAME"}, err=<nil>

? // LINE: record=[]string{"HDR", "COMPANY_EXAMPLE"}, err=<nil>

}

請(qǐng)注意,這里有一個(gè)微妙的錯(cuò)誤,如果直到后續(xù)調(diào)用才讀取行終止符,尾隨空格仍然可以通過(guò)。您可以通過(guò)緩沖來(lái)解決問(wèn)題,或者最好是簡(jiǎn)單地預(yù)處理這些 CSV 文件以在嘗試解析它們之前刪除尾隨空格。


查看完整回答
反對(duì) 回復(fù) 2023-04-04
  • 1 回答
  • 0 關(guān)注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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