2017-10-13 7 views
0

J'ai un répertoire qui contient 2000 fichiers .txt, avec différentes tailles. Certains d'entre eux ont des noms très similaires, tels que:Groupe Python noms de fichiers similaires

trend_micro.txt 
trendmicro.txt 

et

microsoft-windows.txt 
microsoft.txt 

J'ai tous les noms de fichiers dans une liste. Comment pourrais-je regrouper ces noms de fichiers similaires?

Répondre

1

Il n'est pas clair comment vous définissez "similaire" et "dissemblable". Ici je suppose que deux noms de fichiers sont similaires s'ils deviennent identiques après avoir jeté "-" et "_" .Le code suivant devrait faire le travail

def reduce_key(fn): 
    # you can change this according to your definition of "similar" 
    return fn.replace("-","").replace("_","") 

from collections import defaultdict 
# this holds the grouped filenames 
group_dict = defaultdict(list) 
for fn in your_list: 
    key = reduce_key(fn) 
    group_dict[key].append(fn) 

print(group_dict)