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 :

Créer plusieurs dictionnaires à partir d'éléments de liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Février 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Février 2021
    Messages : 1
    Par défaut Créer plusieurs dictionnaires à partir d'éléments de liste
    Bonjour à tous,

    Je suis en train de me former à la programmation python dans le cadre d'une reconversion professionnelle vers la data analyse.
    Je fais quelques exercices sur les regex mais je bloque sur un point.

    Dans cet exercice j'ai un fichier de logs dont je dois ressortir différentes données (noms d'utilisateurs, IP, type de requete et date) sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    example_dict = {"host":"146.204.224.152", 
                    "user_name":"feest6811", 
                    "time":"21/Jun/2019:15:45:24 -0700",
                    "request":"POST /incentivize HTTP/1.1"}
    Le but étant de pouvoir afficher un dictionnaire par utilisateur.
    Je ne sais pas si ma méthode est la bonne, mais j'ai commencé par créer 4 listes contenant chacunes les éléments que je cherchais en écrivant ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import re
    def logs():
        with open("logdata.txt", "r") as file:
            logdata = file.read()
            host=re.findall("([\d]*[\.][\d]*[\.][\d]*[\.][\d]*)",logdata) #me permet d'obtenir chaques IP
            user=re.findall("((?<=[\-][\s])[\w]*)",logdata) #me permet d'obtenir chaque nom d'utilisateurs
            time=re.findall("([\d][\d][\/][\w]*[\/][\d]*:[\d]*:[\d]*:[\d]*[\s][\-][\d]*)",logdata) #me permet d'obtenir chaques dates
            post=re.findall("((?<=[\"]).*(?=[\"]))",logdata) #me permet d'obtenir chaque requetes
    J'obtiens bien le bon résultat en demandant ensuite d'afficher un dictionnaire précis, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      dico={"host":host[1],"user_name":user[1],"time":time[1],"request":post[1]}
    Par contre j'aurais voulu que la fonction me permette de retourner n'importe quel dictionnaire en réponse et je ne sais pas comment faire, est ce qu'il faut que je rajoute des paramètres?

    Merci à ceux qui prendront le temps de m'aider

    Ps : je sais que la fonction n'est actuellement pas complète et que ça ne peut pas fonctionner uniquement avec ce que j'ai mis, j'essaye justement de savoir ce que je dois mettre en return à la fin pour pouvoir obtenir ce que je cherche

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Citation Envoyé par SonnePer Voir le message
    Par contre j'aurais voulu que la fonction me permette de retourner n'importe quel dictionnaire en réponse et je ne sais pas comment faire, est ce qu'il faut que je rajoute des paramètres?
    Si la fonction retourne le nième dictionnaire, il faut lui passer n en paramètre... Après c'est peut être dommage qu'à chaque appel, la fonction mette en forme tout le fichier log. Lui faire retourner une liste de dicos dans laquelle on pourra piocher des items sera peut être plus judicieux.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Créer un dictionnaire à partir d'une liste
    Par jouclar dans le forum Général Python
    Réponses: 7
    Dernier message: 25/04/2012, 22h09
  2. Réponses: 4
    Dernier message: 11/04/2008, 15h02
  3. Créer plusieures tables à partir d'une seule
    Par CHINAILLON dans le forum VBA Access
    Réponses: 4
    Dernier message: 20/03/2008, 15h35
  4. [forms 10g] créer une LOV à partir de 2 champs liste
    Par lolafrite dans le forum Forms
    Réponses: 2
    Dernier message: 09/02/2007, 11h22
  5. Créer plusieurs colonnes à partir d’une seule
    Par jeje22 dans le forum Access
    Réponses: 5
    Dernier message: 12/09/2006, 16h31

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