问题:
**读取csv文件时,首字符双引号,导致结果异常,这里该如何避免?**
tmp.csv文件如下:
```
11,as"hello"-s,123,ppsid
11,"hello"-s,123,ppsid
```
主代码:
```go
func Test01() {
opencast, err := os.Open("./uploads/tmp.csv")
if err != nil {
log.Println("csv文件打开失败!")
}
defer opencast.Close()
ReadCsv := csv.NewReader(opencast)
ReadCsv.LazyQuotes = true
ReadCsv.FieldsPerRecord = -1
for {
read, err := ReadCsv.Read()
if err != nil && err != io.EOF {
log.Fatalf("can not read, err is %+v", err)
}
if err == io.EOF {
break
}
fmt.Println(read[1])
}
}
```
结果:
```go
as"hello"-s
hello"-s,123,ppsid
```
更多评论
查询资料,说是如果单元格内出现双引号(如下),需要在外部再套一层双引号,但是由于文件的csv文件的写出我这边不可控,还是无法解决:fearful:
```go
csv文件:
11,"as"hello"-s",123,ppsid
11,""hello"-s",123,ppsid
```
```go
输出:
as"hello"-s
"hello"-s
```
#1
1. 向提供方反馈,因为提供的csv格式是错误的,应当更正
2. 自行处理修复,例如:自己写一个csv处理库,对上面的情况容错
有可能提供方是直接插入`,`分割生成的csv,如果真是是这种情况,
那么数据中本身包含分割符`,`就难顶了,例如下面的 `hello,world`:
```go
11,hello,world,123,ppsid
```
#2