相关疑难解决方法(0)

go中逐行读取文件

我无法file.ReadLine在Go中找到功能.我可以弄清楚如何快速写一个,但只是想知道我是否在这里忽略了一些东西.如何逐行读取文件?

string parsing file line go

286
推荐指数
9
解决办法
25万
查看次数

在Go中提取子串

我试图从控制台(包括空格)读取整行,然后处理它.使用bufio.ReadString,换行字符与输入一起读取,所以我想出了以下代码来修剪换行符:

input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string
Run Code Online (Sandbox Code Playgroud)

有没有比较惯用的方法呢?也就是说,在为您提取子字符串时,是否已有一个处理结束空字节的库?

(是的,我知道有一种方法可以在go readline - > string中读取没有换行符的行,但我正在寻找更优雅的字符串操作.)

substring go

96
推荐指数
6
解决办法
13万
查看次数

当一些行长到足以导致"bufio.Scanner:token too long"错误时,如何在Go中逐行读取文本文件?

我有一个文本文件,其中每一行代表一个JSON对象.我正在使用这样的简单for循环在Go中处理此文件:

scanner := bufio.NewScanner(file)
for scanner.Scan() {
   jsonBytes = scanner.Bytes()
   var jsonObject interface{}
   err := json.Unmarshal(jsonBytes, &jsonObject)

   // do stuff with "jsonObject"...

}
if err := scanner.Err(); err != nil {
   log.Fatal(err)
}
Run Code Online (Sandbox Code Playgroud)

当此代码到达具有特别大的JSON字符串(~67kb)的行时,我收到错误消息"bufio.Scanner:token too long".

是否有一种简单的方法可以增加可读的最大行数NewScanner?或者是否有另一种方法可以完全采取,当需要读取太大NewScanner但不知道通常不安全的线路?

go

17
推荐指数
2
解决办法
9672
查看次数

Golang,有没有更好的方法将整数文件读入数组?

我需要将一个整数文件读入一个数组.我有这个工作:

package main

import (
    "fmt"
    "io"
    "os"
)

func readFile(filePath string) (numbers []int) {
    fd, err := os.Open(filePath)
    if err != nil {
        panic(fmt.Sprintf("open %s: %v", filePath, err))
    }
    var line int
    for {

        _, err := fmt.Fscanf(fd, "%d\n", &line)

        if err != nil {
            fmt.Println(err)
            if err == io.EOF {
                return
            }
            panic(fmt.Sprintf("Scan Failed %s: %v", filePath, err))

        }
        numbers = append(numbers, line)
    }
    return
}

func main() {
    numbers := readFile("numbers.txt")
    fmt.Println(len(numbers))
}
Run Code Online (Sandbox Code Playgroud)

文件numbers.txt只是:

1
2
3 …
Run Code Online (Sandbox Code Playgroud)

go

15
推荐指数
2
解决办法
2万
查看次数

Go:用换行符分割byte.Buffer

Go的新手并遇到如下问题:

var metrics bytes.Buffer

metrics.WriteString("foo")
metrics.WriteString("\n")

metrics.WriteString("bar")
metrics.WriteString("\n")
Run Code Online (Sandbox Code Playgroud)

现在我想循环遍历这些指标并按换行分割.我试过了

for m := strings.Split(metrics.String(), "\n") {
     log.Printf("metric: %s", m)
}
Run Code Online (Sandbox Code Playgroud)

但我得到以下内容

./relay.go:71: m := strings.Split(metrics.String(), "\n") used as value
Run Code Online (Sandbox Code Playgroud)

go

6
推荐指数
2
解决办法
8301
查看次数

标签 统计

go ×5

file ×1

line ×1

parsing ×1

string ×1

substring ×1