gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:11:50 25 4
gpt4 key购买 nike

我正在编写一个对矩阵执行数学运算的程序。我想从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com