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()
× 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.