Voici le programme à enregistrer dans un fichier "melting.py"
et à executer suivi du nom du texte a traduire et du nom du texte résultant. eg: python melting.py samedi.txt samedi_traduit.txt
#!/usr/bin/python
# -*- coding: utf-8 -*-
from random import *
#import des methodes aléatoires
from string import *
#import des gestion de chaines
import sys
#import de l'objet sys qui gere l'environnement
import codecs
#import de l'objet codecs
#qui permet l'ouverture d'un
#fichier en UTF-8 (entre autre)
import re
#import des reg exp
#LES FONCTIONS
#*************
#fonction mélanger prend une chaine et renvoie une chaine
def mel(mot):
a=list(mot)
shuffle(a)
a=join(a,"")
return a
#fonction qui gere en fonction du mot
def env(mot):
#gestion . .. ... ??? !! ?? .. etc...
pTrois=re.compile('\W{1,5}$').search(mot)
#gestion ' (exemple "l'arrivé")
pApo=re.compile("['`-]").search(mot)
#gestion debut "mot ou (mot ou -mot
pDeb=re.compile('^[\(\"]').search(mot)
#gestion des chiffres
pChif=re.compile('[0-9]').search(mot)
if pChif:
print "**chiffre"
return mot
test="pas de changement"
if pTrois:
deb=mot[:1]
fin=mot[pTrois.start()-1:]
milieu=mot[1:pTrois.start()-1]
test="youpi"
if pApo:
deb=mot[:pApo.start()+1]
milieu=mot[pApo.start()+1:pTrois.start()-1]
test="youpi2"
else:
deb=mot[:1]
fin=mot[-1:]
milieu=mot[1:-1]
test="bof"
if pApo:
deb=mot[:pApo.start()+1]
milieu=mot[pApo.start()+1:-1]
test="youpi2"
#On recolle les morceaux et roule!
print ".",
return deb+mel(milieu)+fin
def traitement(phrase, cao):
#ON DÉCOUPE LES MOTS
mots=re.split(r'(\s+)', phrase)
#On calcul le nombre de mot à modifier
chao=int(cao)*len(mots)/10
#On crée la liste des identifiants des mots
lg=range(len(mots))
#On prend qq mots en fonction du chaos souhaité
for i in sample(lg, chao):
#on zappe les mots trop courts
if len(mots[i])>4:
mots[i]=env(mots[i])
#on renvoie la phrase
return join(mots,'')
#le main
#-------
if len(sys.argv)>1:
#Si les arguments sont donné
print "Début du traitement",
else:
#Sinon on donne l'usage et on quitte proprement
print "Utilisation:"
print "./melting <fichier texte à traduire> <fichier texte traduit> [Entrée]"
sys.exit(37)
#Ensuite on traite le fichier
#en l'envoyant dans un variable
#qui prend tout sous forme d'une longue chaine
texte=open(sys.argv[1]).read()
#Le texte en utf8 est décodé
texte=codecs.decode(texte,'utf8')
#ensuite on split en section
sect=texte.split("@")
#et on enregistre chaque section et son tx de kao
kao=[]
sections=[]
for i in sect:
if len(i)>0:
kao.append(i[0])
sections.append(i[2:])
#On ouvre le fichier de sortie
sorti=open(sys.argv[2],"w")
#Pour chaque section on envoi le traitement
#et on enregistre dans le fichier de sortie
for i in range(len(sections)):
sorti.write(codecs.encode(traitement(sections[i],kao[i]),'utf8'))