其他建议要么是Java,要么没有考虑到这一点(我发现(。
reader := bufio.NewReader(file)
for err == nil {
line, err = Readln(reader)
record := strings.Split(line, ",")
fmt.Println(len(record), line)
}
使用这个循环,我可以有效地读取我的CSV文件,但是,当Split
遇到一行的预期值中有逗号时,它会出现问题。例如,"Fake Company USA, Inc.",
strings.Split
也将在字符串中的逗号上进行拆分。
有没有办法在这里的逗号上拆分?比如,一个周围有0个空格的逗号,或者一个没有引号的逗号?
注意:我使用原始方法,因为我以前使用的csv阅读器不能很好地处理大文件,所以为了处理起见,我使用bufio。
您为什么不使用内置的encoding/csv
包?只要使用.Read
而不是.ReadAll
,性能就应该与逐行阅读并尝试拆分自己相同。
import (
"encoding/csv"
"io"
"fmt"
)
reader := csv.NewReader(file)
for {
records, err := reader.Read()
if err != nil {
if err == io.EOF {
break
}
log.Fatal(err)
}
fmt.Println(records)
}