恐慌:行尾的额外分隔符

我正在使用 Go读取MaxMind GeoIP Lite City 位置 CSV 文件:


csvFile, err := os.Open("/path/GeoLiteCity_20130702/GeoLiteCity-Location.csv")

defer csvFile.Close()


if err != nil {

    panic(err)

}


csvf := csv.NewReader(csvFile)

csvf.Read()     // skip header row



for {

    fields, err := csvf.Read()


    if err == io.EOF {

        break

    } else if err != nil {

        panic(err)

    }


    // does nothing yet

}

我得到的错误是:


恐慌:第 2 行,第 22 列:行尾的额外分隔符


goroutine 1 [运行]: main.main() /path/myprogram.go:239 +0x108f


goroutine 2 [runnable]:退出状态 2


该文件很长,但从以下几行开始:


locId,country,region,city,postalCode,latitude,longitude,metroCode,areaCode

1,O1,,,,0.0000,0.0000,,

2,AP,,,,35.0000,105.0000,,

3,EU,,,,47.0000,8.0000,,

4,AD,,,,42.5000,1.5000,,

5,AE,,,,24.0000,54.0000,,

6,AF,,,,33.0000,65.0000,,

7,AG,,,,17.0500,-61.8000,,

8,AI,,,,18.2500,-63.1667,,

9,AL,,,,41.0000,20.0000,,

它似乎格式正确。每行有 9 个字段。


第 239 行是我调用恐慌的行,panic(err). 如您所见,它在 CSV 文件的第 2 行失败,这发生在循环的第一次迭代中(在循环之前读取第 1 行,以跳过标题行)。第 2 行的第 22 列是倒数第二个逗号。


我在这里错过了什么吗?我没有看到任何尾随逗号......(澄清:每行末尾的逗号必须存在以指示空字段值,因此它们不会尾随,如额外的。)


人到中年有点甜
浏览 198回答 2
2回答

守着一只汪

每行甚至有两个尾随逗号。尝试设置csv.Reader.TrailingComma = true。它通常有助于查看源代码或至少包文档:-)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go