第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Golang 掃描文本文件中的單詞

Golang 掃描文本文件中的單詞

Go
ITMISS 2022-05-23 16:05:27
我想將一個(gè)文本文件(file.txt)拆分為兩個(gè)單獨(dú)的大小相等的文本文件,例如 file1.txt 和 file2.txt。我在拆分中的策略是掃描單詞并計(jì)算它們,然后將前半部分的單詞寫入 file1.txt,其余的寫入 file2.txt 這是代碼:package mainimport (    "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據(jù)我猜測,scanner.Scan() 返回一個(gè)布爾值。在計(jì)算了單詞的數(shù)量之后,如何在 Golang 中實(shí)現(xiàn)這樣的代碼,將前半部分的單詞寫入 file1.txt,其余的寫入 file2.txt?
查看完整描述

3 回答

?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

解決方案:


var s []string 

.

.

.

for scanner.Scan() {// storing or appending file.txt string values to array s.

        s = append(s, scanner.Text())

    }

    if err := scanner.Err(); err != nil {

        log.Fatal(err)

    }

    //writing to file1 and file2

    if len(s)%2 == 0 { // if the occurences of words is an even number.

        for i := 0; i <= len(s)/2-1; i++ { // Writing first half of words to file1

            fmt.Fprintln(file1, s[i])


        }


        for j := len(s) / 2; j < len(s); j++ { // Writing second half of words to file2

            fmt.Fprintln(file2, s[j])


        }

    } else { // if the occurences of words is an odd number.

        for i := 0; i <= len(s)/2; i++ { // Writing first part of words to file1

            fmt.Fprintln(file1, s[i])

        }


        for j := len(s)/2 + 1; j < len(s); j++ { // Writing second part of words to file2

            fmt.Fprintln(file2, s[j])


        }

    }

.

.

.


查看完整回答
反對 回復(fù) 2022-05-23
?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

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)

    }

    file1, err := os.Create("file1.txt.txt")

    if err != nil {

        panic(err)

    }


    file2, err := os.Create("file2.txt.txt")

    if err != nil {

        panic(err)

    }


    defer file.Close()

    defer file1.Close()

    defer file2.Close()


    file.Seek(0, 0)

    scanner := bufio.NewScanner(file)

    scanner.Split(bufio.ScanWords)

    w := 0


    for scanner.Scan() {

        var outfile *os.File

        if w%2 == 0 {

            outfile = file1

        } else {

            outfile = file2

        }

        fmt.Fprintln(outfile, scanner.Text())

        w++

    }


    if err := scanner.Err(); err != nil {

        log.Fatal(err)

    }


}


查看完整回答
反對 回復(fù) 2022-05-23
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果您想將文件切成兩半,那么您已經(jīng)完成了一半。數(shù)完單詞后,只需返回并再次讀取文件,將一半寫入一個(gè)文件,一半寫入另一個(gè)文件:


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++

}

上面,file1和file2是兩個(gè)輸出文件。


如果您不需要將文件切成兩半而只需將一半的單詞放在一個(gè)文件中,另一半放在另一個(gè)文件中,您可以一次完成,無需計(jì)數(shù)。當(dāng)您從第一個(gè)讀取時(shí),只需切換要寫入的文件:


w:=0

for scanner.Scan() {

   var outfile *os.File

   if w%2==0 {

     outfile=file1

   } else {

     outfile=file2

   }

   fmt.Fprintln(outfile,scanner.Text())

   w++

}


查看完整回答
反對 回復(fù) 2022-05-23
  • 3 回答
  • 0 關(guān)注
  • 224 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號