0
votes

Mots de numérisation dans un fichier texte de Golang

Je veux diviser un fichier texte (fichier.txt) en deux fichiers de textes de taille égale distincts tels que File1.txt et File2.txt. Ma stratégie dans la scission consiste à numériser des mots et à les compter puis écrivez la première moitié des mots sur File1.txt et le reste à File2.txt Ceci est le code: xxx

HTTPS: // Godoc .ORG / BUFIO # Exemple-scanner - Mots

Autant que je puisse deviner Scanner.Scan () renvoie un booléen. Après avoir compté le nombre de mots, comment je peux mettre en œuvre un tel code à Golang que les états indiquent la première moitié des mots à FILE1.TXT et le reste dans File2.txt?


0 commentaires

3 Réponses :


0
votes

Si vous voulez couper le fichier en deux, vous êtes à mi-chemin. Après avoir compté les mots, revenez simplement et lisez le fichier à nouveau, écrivant la moitié à un fichier une moitié à l'autre: xxx pré>

ci-dessus, fichier1 code> et et File2 code> sont les deux fichiers de sortie. P>

Si vous n'avez pas besoin de couper le fichier en deux, mais simplement mettre la moitié des mots dans un fichier et l'autre moitié de l'autre, vous pouvez Faites-le en un seul passage, sans compter. Simplement basculer le fichier pour écrire à partir de la première: P>

w:=0
for scanner.Scan() {
   var outfile *os.File
   if w%2==0 {
     outfile=file1
   } else {
     outfile=file2
   }
   fmt.Fprintln(outfile,scanner.Text())
   w++
}


2 commentaires

Avez-vous une idée aussi pour diviser la première moitié des mots de la seconde de la moitié des mots en ordre? Je veux dire comme cette phrase: "Vous pouvez maintenant accéder à tout contenu de la conférence à la demande pour le mois prochain." La première moitié des mots: "Vous pouvez maintenant accéder à tout contenu de la" seconde moitié des mots: "Conférence à la demande pour le mois prochain."


Compter les mots qui écrivent la première moitié à un fichier et la seconde moitié à la seconde le ferait



0
votes
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)
    }

}

0 commentaires

0
votes

solution: xxx


0 commentaires