Cette fois ça marche parfaitement bien, accents, plusieurs signes de ponctuations, gestion des @, tout est nickel
Merci python! _/\_//°~
Pour utiliser ce programme:
1- Vous devez avoir python2.4 installé
2- Vous recopier le texte du programme et vous l'enregistrer dans un fichier que vous appelez melting.py ou desordre.py (ou un autre nom.py)
3- vous devez le rendre executable (sous linux: chmod +x melting.py)
4- ensuite vous devez avoir un fichier texte qui respecte deux choses:
* Etre encodé en utf8 (c'est une option à trouver lors de l'enregistrement)
* Que la ponctuation soit collé aux mots
ex: l'ami, ou "était-ce? ou encore à bientôt...
5- Dans ce texte vous devez ajouter les signes de chaos: @ suivi d'un chiffre entre 0 et 9
ex: @0 L'histoire commence @3 le suspens monte @9 c'est n'importe quoi @5 ça retombe un petit peu @0 tout redevient normale.
Ne vous preoccupez pas de la pnctuation au mileu des séquence de @# par contre laissez bien un seul espace avant le @ et un seul espace après le chiffre! toujours même s'il y a un saut de ligne ça ne suffit pas!
6- une fois votre texte modifié et enregistré, ouvrer un terminal ou une fenetre DOS (berk!) et allez dans le dossier contenant le texte et le fichier melting.py en faisant: cd làousetrouve/mondossier
7- envoyer la commande :
python melting.py montexteavec@ montextedesordonné
8- vérifié que le texte desordonné correspond bien a votre attente...
Voila...
Donc maintenant voici le programme :
#!/usr/bin/python
# -*- coding: utf-8 -*-
#LES LIBRAIRIES EXTERNES
#***********************
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
#gestion de l'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=[]
a=list(mot)
shuffle(a)
a=join(a,"")
return a
#fonction qui gere le mot
def env(mot):
#On split selon une methode... à éclaircir!!!
entite=re.split('(\W*)',mot)
#Pour chaque entité
for i in range(len(entite)):
#on test si elle est superieur à 3 caractere
if len(entite[i]) > 3:
#on crée le nouvo mot melangé au milieu
d=entite[i][:1]
m=mel(entite[i][1:-1])
f=entite[i][-1:]
entite[i]=d+m+f
#On recolle les morceaux et roule!
return join(entite,'')
#Fonction qui gere les sections
def traitement(phrase, cao):
#On découpe les mots
mots=re.split(r'(\s+)', phrase)
#On crée la liste des identifiants des mots
lg=range(len(mots))
#On vire les mots trop courts
for i in lg:
if len(mots[i])<4:
lg.remove(i)
#On calcul le nombre de mot à modifier
chao=int(cao)*len(lg)/10
#On prend qq mots en fonction du chaos souhaité
for i in sample(lg, chao):
#Et on les envoie au traitement de mots
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 txt> <fichier txt traité> [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()
#On le décode (il doit etre en utf8) gestion a revoir (autres modes...)
texte=codecs.decode(texte,'utf8')
#on crée le fichier de sortie
#gestion a revoir:
#(ajout date heure dans le nom du fichier)
sorti=open(sys.argv[2],"w")
#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:])
#Maintenant il faut envoyer chaque section et son tx de kao
#Dans une fonction qui va spliter la section par les espaces
#et traiter chaque mot.
for i in range(len(sections)):
sorti.write(codecs.encode(traitement(sections[i],kao[i]),'utf8'))
print "fin traitement"
Et maintenant je vais me coucher!