arrays - 从 csv 文件加载矩阵 - golang

标签 arrays csv matrix go

我正在编写一个对矩阵执行数学运算的程序。我想从 csv 文件加载它们并具有以下代码:

    file, err := os.Open("matrix1.csv")
if err != nil {
    log.Fatal(err)
}
defer file.Close()
lines, _ := csv.NewReader(file).ReadAll()
for i, line := range lines {
    for j, val := range line {
        valInt, err := strconv.Atoi(val)
        if err != nil {
            log.Fatal(err)
        }
        matrix1[i][j] = valInt
    }
}

但是 strconv 代码抛出错误:

strconv.ParseInt: parsing "": invalid syntax

看来代码中的其他所有内容都是正确的,有人对如何解决此错误有任何想法吗?

编辑:我现在正在尝试将结果输出到新的 csv 文件。

我有以下代码:

    file2, err := os.Create("result.csv")
if err != nil {
    log.Fatal(err)
}
defer file1.Close()

writer := csv.NewWriter(file2)
for line2 := range blank {
    writer.Write(line2)
}

}

}

这会产生以下错误:

 cannot use line2 (type int) as type []string in argument to writer.Write

根据评论中的建议进行了更新,但现在出现了上述错误。

最佳答案

这意味着您的 CSV 的一个单元格为空,我使用以下代码重现了该错误:

package main

import (
    "encoding/csv"
    "log"
    "strconv"
    "strings"
)

func main() {
    matrix1 := [5][5]int{}

    file := strings.NewReader("1,2,3,4,5\n6,7,8,,0")
    lines, _ := csv.NewReader(file).ReadAll()
    for i, line := range lines {
        for j, val := range line {
            valInt, err := strconv.Atoi(val)
            if err != nil {
                log.Fatal(err)
            }
            matrix1[i][j] = valInt
        }
    }
}

如果您同意将空白单元格视为 0,这将使您克服错误:

func main() {
    matrix1 := [5][5]int{}

    file := strings.NewReader("1,2,3,4,5\n6,7,8,,0")
    lines, _ := csv.NewReader(file).ReadAll()
    for i, line := range lines {
        for j, val := range line {
            var valInt int
            var err error
            if val == "" {
                valInt = 0
            } else {
                valInt, err = strconv.Atoi(val)
            }
            if err != nil {
                log.Fatal(err)
            }
            matrix1[i][j] = valInt
        }
    }
}

关于arrays - 从 csv 文件加载矩阵 - golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44250414/

相关文章:

excel - VBA - 创建 n × m 矩阵的函数

android - 获取jsonarray下每个元素的KEYS数组

c - 删除最后一个字符,然后连接两个字符串

c - 将数组传递给c中的函数

mysql - 使用循环将多个相同形式的数组插入到一个表中

vba - 从 VBA 中的数组创建 CSV

postgresql - 从 CSV 加载 PostgreSQL 表,数据在括号之间带有逗号

javascript - 如何在 Javascript 中读取数组中的 csv 文件?

php - 获取矩阵元素组合的最小总和

performance - 用于计算矩阵元素之间边界的脚本