gpt4 book ai didi

go - Golang 扫描文本文件中的单词

转载 作者:行者123 更新时间:2023-12-01 22:24:44 29 4
gpt4 key购买 nike

我想将一个文本文件(file.txt)拆分为两个单独的大小相等的文本文件,例如 file1.txt 和 file2.txt。我在拆分中的策略是扫描单词并计算它们,然后将前半部分的单词写入 file1.txt,其余的写入 file2.txt
这是代码:

package main
import (
"bufio"
"fmt"
"log"
"os"
)
func main() {
WordbyWordScan()
}
func WordbyWordScan() {
file, err := os.Open("file.txt.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
scanner.Split(bufio.ScanWords)
count := 0
for scanner.Scan() {
fmt.Println(scanner.Text())
count++
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
fmt.Printf("%d\n", count)
}

https://godoc.org/bufio#example-Scanner--Words

据我猜测,scanner.Scan() 返回一个 bool 值。在计算了单词的数量之后,如何在 Golang 中实现这样的代码,将前半部分的单词写入 file1.txt,其余的写入 file2.txt?

最佳答案

如果您想将文件切成两半,那么您已经完成了一半。数完单词后,只需返回并再次读取文件,将一半写入一个文件,一半写入另一个文件:

file.Seek(0,0)
scanner = bufio.NewScanner(file)
scanner.Split(bufio.ScanWords)
w:=0
for scanner.Scan() {
var outfile *os.File
if w<count/2 {
outfile=file1
} else {
outfile=file2
}
fmt.Fprintln(outfile,scanner.Text())
w++
}

以上, file1file2是两个输出文件。

如果您不需要将文件切成两半而只需将一半的单词放在一个文件中,另一半放在另一个文件中,您可以一次完成,无需计数。当您从第一个读取时,只需切换要写入的文件:
w:=0
for scanner.Scan() {
var outfile *os.File
if w%2==0 {
outfile=file1
} else {
outfile=file2
}
fmt.Fprintln(outfile,scanner.Text())
w++
}

关于go - Golang 扫描文本文件中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60774117/

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