0

这是完整的代码:

files, _ := ioutil.ReadDir("files")
for _, f := range files {
    input, err := ioutil.ReadFile("files/" + f.Name())
    lines := strings.Split(string(input), "\n")

    for i, _ := range lines {
        lines[i] = fmt.Sprintf("%v,", lines[i])
    }

    output := strings.Join(lines, "\n")
    err = ioutil.WriteFile("files/"+f.Name()+"fix", []byte(output), 0644)
    if err != nil {
        log.Fatalln(err)
    }
}

我认为这是因为 lines[i] 必须在字符串末尾包含一个换行字节。我试图删除它但失败了。

我加载的文件只是 json 文件,例如

第 1 行:{ "foo":"bar","baz":null }

第 2 行:{ "foo":"bar","baz":"quz" }

我试图在所有行的末尾添加一个逗号。任何帮助将不胜感激

只是为了让自己更清楚一点,我现在得到的是:

{ "foo":"bar","baz":null }
,
{ "foo":"bar","baz":"quz" }
,

而我想要得到的是:

{ "foo":"bar","baz":null },
{ "foo":"bar","baz":"quz" },
4

2 回答 2

3

您的 JSON 数据是否可能来自 Windows,并且实际上包含 /r/n 而不仅仅是 /n?

您可以在这个操场示例中使用 /r/n 看到这种行为:

package main

import (
    "fmt"
    "strings"
)

func main() {
    a := "test\r\nnewtest\r\ntest2"
    b := strings.Split(a, "\n")
    c := strings.Join(b, ",\n")
    fmt.Printf("%v", c)

}
于 2017-03-05T15:31:36.443 回答
3

尝试修剪该行以清理它具有的任何尾随 unicode 代码点:

import "strings"

// ...

for _, line := range lines {
        line = fmt.Sprintf("%v,", strings.Trim(line, " \r\n"))
}
于 2017-03-05T16:19:54.200 回答