CodeS-SourceS
Rechercher un code, un tuto, une réponse

Tri de mots (Regex + count())

Soyez le premier à donner votre avis sur cette source.

Snippet vu 1 616 fois

Contenu du snippet

Bonjour,

Comme ça ne sers à rien j'ai créé un script qui tri les mots en fonction
du nombre de caracteres et le fait qu'il n'y ai qu'une seule occurences
de chaque caracteres dans le mot.

Attention:- pour python 2.* (pour Python 3 enlevez les decode() & encode())
- Mettez le fichier texte dans la variable ou en argument
apres commande Ex:$Python SelectCD.py /home/User/list_mots.txt

# -*-coding:utf-8-*-
# __AUTOR__='M4RK05'

import re, sys
import os, time


temps= time.time() # Chrono. 

# Façon Améliorée avec double-boucle et range(start, stop) 9 lignes de moins!
def occur(mot):
    """ Fonction qui vérifie qu'il n'y ai qu'une seule occurence de chaque caractères"""
    
    alph= "abcdeéèfghiîïjklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    hig=[]
    for x in range(56):
       hig.append(mot.count(alph[x]))
       for g in range(2, 7):
           if hig.count(g)> 0:
                return False
                break
           else:
                pass
    return True

# Première façon trouvée (pas très beau lol!)
def occu(mot):
    """ Fonction qui vérifie qu'il n'y ai qu'une seule occurence de chaque caractères"""
    
    alph= "abcdeéèfghiîïjklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    hig=[]
    for x in range(56):
       hig.append(mot.count(alph[x]))
       if hig.count(2)> 0:
             return False
             break
       elif hig.count(3)> 0:
             return False
             break
       elif hig.count(4)> 0:
             return False
             break
       elif hig.count(5)> 0:
             return False
             break
       else:
             pass
    return True

# Nombre de positifs puis de négatif:
nbuen=0                  	
nerrors= 0
# Expression reguliere pour obtenir tous les mots de 10 caractères
# reg= r"^[A-Za-z]{10,10}$"

# Fichier à traiter en dur.
fi1= '/home/fred/liste-francais'

# Fichier à traiter passé en argument au script python.
fi2= str(sys.argv[1])

with open(fi2, "r") as mon_fichier :
    txt= mon_fichier.read()
    liste= txt.split()
    
    for line in liste:
        line.decode('utf8')
        if re.match(r"^[A-Za-z]{10,10}$", line ) and occur(line)== True:
            print (line.encode('utf8') +"  "+ str(occu(line))+"  10 unicS C. *****")
            nbuen+=1
        else:
           nerrors +=1
ri=4
#time.sleep(19)
tmp= time.time()- temps
tem= str(tmp)
if float(tem) > 9.0:
    ri= 5
elif float(tem) > 99.0:
    ri= 6
elif float(tem) > 999.0:
    ri= 7
else:
    pass
print("------------------------------------")  
print(" Terminé avec "+ str(nerrors) +" mots éliminés!")               
print("------------------------------------")
print("Terminé "+ str(nbuen) +" mots trouvés!En "+ tem[:ri] +" sec.")
print("------------------------------------")
print("n")
print("-------------Par M4RK05--------------")
print("le nom du script est ==> "+ str(sys.argv[0]))

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.