Partage
  • Partager sur Facebook
  • Partager sur Twitter

"Traduction" d'un fichier

Problème de suppression de caractères sur .txt

    22 septembre 2019 à 11:17:40

    Bonjour,

    Mon programme traduit la saisie brute d'un clavier en fichier texte lisible. Par exemple : 

    "Le [N2][N2] septembre" devient "Le 22 septembre" (Un fichier liste les traductions des "caractère spéciaux" (comme [N2] ici).

    Le programme va écrire cette "traduction" sur un fichier texte, caractère par caractère.

    Le problème vient pour la "traduction" du [Bck] (retour en arrière). J'utilise 

    fileApres.truncate(fileApres.tell()-1) 

    pour supprimer le dernier caractère. Sauf qu'il met un espace à la place, je ne sais pour quelle raison. De plus, le programme écrit des caractères chinois si un espace est avant ou après un [Bck]. Par exemple, "123455[Bck]6" devient bien "12345 6" (avec un espace en trop) mais "123455 [Bck]6" devient "㈱㐳5㙟"

    J'ai pourtant forcé l'encodage en UTF8

    Le programme : 

    from datetime import *
    import os
    import codecs
    
    # -*- coding: utf-8 -*-
    
    os.remove("Apres.txt") #Supressionb du fichier deja existant
    
    texteAvant = "123455[Bck] 6"  #On traduit du caractère
    
    #-----> Un espace avant ou après un [Bck] transforme le fichier avec des caracètres chinois 
    #-----> Le [Bck] supprime bien le dernier caratère mais le remplace par un espace
    
    #Fichier a lire
    fileApres = codecs.open("Apres.txt","w", encoding='utf-8')
    
    special = "" #caractère spécial
    isSpecial = False #spaecial
    
    
    def specialCar(special):
        fileSpecialCar = open("specialsCar.txt", "r")
        if special == "[Bck]" :      
            fileApres.truncate(fileApres.tell()-1) 
            return ""  
        else:
            for line in fileSpecialCar:
                i = 0
                if fileSpecialCar.read(len(special)) == special:
                    trad = fileSpecialCar.read(len(special)).split(" ")
                    if trad[2] == "00":
                        return ""
                    else:
                        return trad[2]
            file.close()
    
            
    i = 0
    while i < len(texteAvant):
        car = texteAvant[i]
        if car == " ": #SI je ne remplace pas les espaces par un caractère, le programme ecrit avec des lettres chinoises
            fileApres.write("_")
        elif car == "[" :
            special = ""
            isSpecial = True
        elif car == "]" :      
            special += car
            isSpecial = False
            fileApres.write(specialCar(special))     
        elif not isSpecial:
            fileApres.write(car)
        if isSpecial:
            special += car 
        i += 1
           
           
    
    fileApres.close()



    Un extrait du fichier "specialsCar" :

    #DIGITS
    [N0] = 0 
    [N1] = 1 
    [N2] = 2 
    [N3] = 3 
    [N4] = 4 
    [N5] = 5 
    [N6] = 6 
    [N7] = 7 
    [N8] = 8 
    [N9] = 9 
    
    #COMMANDS
    [Alt] = 00

    -
    Edité par IlianAzz 22 septembre 2019 à 11:18:34

    • Partager sur Facebook
    • Partager sur Twitter

    "Traduction" d'un fichier

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown