我有一个多行行的文本文件,由空行分隔。在 Go 中逐行读取该行的最佳方法是什么?
我想我可能不得不使用带有我自己的 Split 功能的 Scanner,但只是想知道是否有更好/更简单的方法。
我曾尝试使用我自己的基于 bufio.ScanLines 的 Splitfunc:
func MyScanLines(data []byte, atEOF bool) (advance int, token []byte, err error) {
if atEOF && len(data) == 0 {
return 0, nil, nil
}
if i := bytes.IndexAny(data, "\n\n"); i >= 0 {
return i + 1, dropCR(data[0:i]), nil
}
if atEOF {
return len(data), dropCR(data), nil
}
return 0, nil, nil
}
但是我在 IndexAny 调用中遇到错误:“语法错误:意外的分号或换行符,期待 )”- 修复了
更新:按照建议修复了上面的语法错误,但我只返回了第一行。我正在阅读文件如下:
scanner.Split(MyScanLines)
scanner.Scan()
fmt.Println(scanner.Text())
有什么建议?
我正在尝试阅读的测试文件示例:
Name = "John"
Surname = "Smith"
Val1 = 700
Val2 = 800
Name = "Pete"
Surname = "Jones"
Val1 = 555
Val2 = 666
Val3 = 444
.
.
.
杨魅力
喵喵时光机
qq_笑_17
相关分类