2 minutes reading time
最近在使用 go 解析 csv 文件时,读取并打印 csv 的每行内容时,读取到第11行时,程序报错,提示:
record on line 11: wrong number of fields
遇到这个问题,我第一反应是 csv 文件的格式有问题,于是我使用 cat
命令查看 csv 文件,发现 csv 文件的格式是正确的,没有问题。
并查看分隔符是正确的,于是可以得出 csv 文件是没有问题的。
接下来就查看所使用的标准库 encoding/csv, 通过查阅文档及 issue, 发现 csv 包中的 FieldsPerRecord 字段,FieldsPerRecord表示csv 文件每行的预期字段数, 如果为正数,则读取的每条记录都必须有对应的字段数,如果为0,则会以第一条记录的数量为标准,接下来每行都必须有对应的字段数,如果为负数,则不会检查字段数。
修改后的代码如下:
package main
import (
"encoding/csv"
"fmt"
"io"
"log"
"os"
)
func main()
本文记录了在使用 go 解析csv时遇到字段数不匹配的问题,并分析了问题的原因,并给出了相应的解决方法。