登录
首页 >  Golang >  Go问答

将CSV行转换为数组

来源:stackoverflow

时间:2024-02-25 09:12:24 477浏览 收藏

本篇文章给大家分享《将CSV行转换为数组》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

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

好了,本文到此结束,带大家了解了《将CSV行转换为数组》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>