将原始CSV行转换为数组



其他建议要么是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)
}

最新更新