我正在尝试从csv文件中读取内容。我有以下,但当我运行代码时,它只打印csv文件的最后一行。
func main() {
f, err := os.Open("data.csv")
if err != nil {
log.Fatal(err)
}
defer f.Close()
r := csv.NewReader(f)
for {
record, err := r.Read()
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
}
fmt.Println(record)
}
}
// Returns
10 3311 74209 OM209] site
我做错了什么?
data.csv
Item,clientid,ident,site
1,2493,83982,OM221
2,2509,85764,OM201
3,2535,70264,OM205
4,2608,70648,OM205
5,2766,83647,OM304
6,2871,69400,OM201
7,2933,80024,OM201
8,2994,77827,OM301
9,3206,73315,OM201
10,3311,74209,OM209
答案 0 :(得分:0)
感谢@Volker提及正确的行结尾。
我的csv文件是使用旧版Excel for Mac创建的,显然存在创建正确行结尾的问题。
在Mac上,Excel生成带有错误行结尾的csv文件,这会导致git(以及其他内容)出现问题。这个问题至少困扰着Excel 2008和2011,可能还有其他版本。基本上,将文件另存为逗号分隔值(csv)使用回车符\ r而不是换行符\ n作为换行符。回到OS X之前,这实际上是正确的Mac文件结束,但是在移动到更多unix-y之后,正确的行结尾应该是\ n。鉴于没有任何东西使用它作为十多年的正确行结束,这是一个错误。
https://nicercode.github.io/blog/2013-04-30-excel-and-line-endings/
创建一个新的文件空白文件并粘贴内容修复它。