IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Recherche de caractères sans tenir compte de la casse des caractères


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut Recherche de caractères sans tenir compte de la casse des caractères
    Bonjour,
    Vous avez compris, je suis débutant.
    J'essaie de programmer un moteur de recherche de fichiers. J'avais fait un programme en batch(qui fonctionne) et j'essaie maintenant de le faire en py
    Le principe est le suivant:
    Je recense dans une liste tous les fichiers situés sous une racine
    J'insère et j'exclue des fichiers de la liste en fonction de leur extension ou en fonction de leur nom partiel.
    Puis après je fais une recherche par contenu (ou exclusion de contenu) à l'intérieur des fichiers stockés dans la liste.
    Après une longue journée d'efforts (je n'y connaissais rien ce matin), j'arrive au code suivant (certainement améliorable) qui n'est que le début.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    import glob 
    import os.path 
     
    def listdirectory(path): 
        fichier = []
        l = glob.glob(path+'\\*') 
        for i in l: 
            if os.path.isdir(i): fichier.extend(listdirectory(i)) 
            else: fichier.append(i) 
        return fichier
     
    menugeneral=True
    fichier=[]
    while menugeneral==True:
        sorted(list(set(fichier))) 
        print("                                                     ", len(fichier)," fichiers")
     
        choixgeneral=input("[R]acine [F]ichier [C]haines [L]ister [O]uvrir [S]ynthèse [Q]uitter ")
     
        if choixgeneral=="R" or choixgeneral=="r" :
            path=input("Entrer la racine de base : ")
            fichier=listdirectory(path)
     
        if choixgeneral=="L" or choixgeneral=="l" :
            for element in fichier :
                print(element)
     
        if choixgeneral=="F" or choixgeneral=="f":
            choixfichier=input("   [I]nclure extensions [E]xclure extensions [F]ichiers : ")
     
            if choixfichier=="I" or choixfichier=="i":
                listefiche=input("      Extensions séparées d'un espace (sans le .) : ")
                listefiche=listefiche.split()
                fichierintermediaire=[]
                for fichetype in listefiche:
                    for element in fichier:
                        if element.count("."+fichetype)>0:
                            fichierintermediaire.append(element)
                fichier=fichierintermediaire            
     
            if choixfichier=="E" or choixfichier=="e":
                listefiche=input("      Extensions séparées d'un espace (sans le .) : ")
                listefiche=listefiche.split()
                fichierintermediaire=[]
                for element in fichier:
                    somme=0
                    for fichetype in listefiche:
                        somme=somme+element.count("."+fichetype)
                    if somme==0:
                        fichierintermediaire.append(element)
                fichier=fichierintermediaire
     
            if choixfichier=="F" or choixfichier=="f":
                print("Mettre des caractères possibles des noms des fichiers séparés d'espaces (sans le .) : ")
                listefiche=input()
                listefiche=listefiche.split()
                fichierintermediaire=[]
                for fichetype in listefiche:
                    for element in fichier:
                        if element.count(fichetype)>0:
                            fichierintermediaire.append(element)
                fichier=fichierintermediaire            
     
        if choixgeneral=="Q" or choixgeneral=="q" : menugeneral=False
    Le problème est le suivant. Si dans ma recherche de fichiers par extension je tape <<doc>> il me trouve des fichiers par contre si je tape <<Doc>> ou <<DOC>> ou ... et là il ne trouve plus rien.
    Y a t-il moyen de programmer une recherche de caractères dans une liste sans tenir compte de la case?
    Merci pour vos réponses.
    Gabriel

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    lower() ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    choixgeneral=input("[R]acine")
    if choixgeneral.lower() == 'r':
        print ('Ok')
    else:
        print ('Nok')
    @+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Bonjour

    OK. Ca marche (effectivement, c'est simple...)

    Pour une liste, j'ai fait une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def lowerliste(liste):
        listeintermediaire=[]
        for element in listefiche:
            listeintermediaire.append(element.lower())
        return listeintermediaire
    Merci.

  4. #4
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Citation Envoyé par Ruyneau Voir le message
    Pour une liste, j'ai fait une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def lowerliste(liste):
        listeintermediaire=[]
        for element in listefiche:
            listeintermediaire.append(element.lower())
        return listeintermediaire
    tu peux utiliser une comprehension list sans faire de fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste = [elem.lower() for elem in liste]

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Salut,

    Une autre solution, si ta liste existe déjà, c'est de la trier "sur place" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    liste.sort(cmp=lambda x, y: cmp(x.lower(), y.lower()))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/05/2011, 12h08
  2. Réponses: 2
    Dernier message: 13/11/2010, 10h30
  3. Réponses: 2
    Dernier message: 17/07/2008, 20h31
  4. Réponses: 4
    Dernier message: 04/11/2006, 20h36
  5. faire une recherche sans tenir compte de la casse
    Par richard038 dans le forum SQL
    Réponses: 5
    Dernier message: 11/10/2005, 09h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo