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 :

caracteres format string


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Décembre 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Décembre 2019
    Messages : 113
    Par défaut caracteres format string
    Bonjour,
    je cherche à trouver un moyen permettant de reconnaitre une valeur dont je connais le format (ou la structure) dans une lsite.
    par exemple, avec la liste suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste=["14752147", "chanel1", "input", "measure", "DT14-2020", "45874.552"]
    j'aimerais réussir à trouver le: "DT14-2020" en indiquant à python de chercher une valeur répondant à la structure: "DT"##"-"#### (avec # représentant n'importe quel chiffre de 0 à 9)

    pour l'instant je m'en sort avec le code ci dessous... mais je pense qu'il y a plus rapide... plus adapté... Non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for element in liste:
    	if element[0:2] == "DT" and element[4] == "-" and len(element) == 9:
    		print(element)
    merci pour vos conseils!

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour

    Pas plus rapide dans ce cas particulier (a condition de ne pas avoir de DT1a-202b)

    En règle générale on utilise les regex (module re)

    ps: tester la longueur de la chaine en tout premier, sinon gros risque d'avoir une erreur "index hors limite"

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 211
    Par défaut
    Hello,
    Citation Envoyé par papajoker Voir le message
    En règle générale on utilise les regex (module re)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import re
    mylist = ["14752147", "chanel1", "input", "measure", "DT14-2020", "45874.552"]
    r = re.compile("DT\d{2}-\d{4}")
    print(list(filter(r.match, mylist))[0])
    ami calmant, J.P

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Décembre 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Décembre 2019
    Messages : 113
    Par défaut
    Bonjour,
    merci à vous tous pour vos retours!
    en effet, le module "re" correspond bien à ce que j'espérais trouver pour remplacer ma boucle de condition initiale!

    sinon, pour ce qui est de l'origine des données, ça m'aurait bien arrangé de pouvoir m'en sortir avec un index constant.
    mais ce n'était pas le cas et c'est justement pour ça que j'ai été contraint de générer une recherche spécifique dans tous les index.

    (pour tout dire, l'origine des données correspond bien à une saisie multichamps - brillamment géré par par python/PyQt5... sauf que cela se fait dans le cadre de l'utilisation d'une API servant à piloter un logiciel (de gestion de m****) ne disposant pas d'une capacité à gérer autant de champs que nécessaire... du coup, au final je me retrouve à injecter différentes valeurs dans une gestion logicielle sur laquelle je n'ai pas la main... et qui, pour certaines données me réordonne la data par ordre alphabétique... bon, ça tiendrait qu'à moi je supprimerait tout simplement l'utilisation de ce foutu logiciel et ne garderait que python (qui répond entièrement au besoin et qui en plus est plus puissant et plus souple...) mais bon... au moins j'aurais découvert le module "re" :-)

    merci!

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par clement_74 Voir le message
    sauf que cela se fait dans le cadre de l'utilisation d'une API servant à piloter un logiciel (de gestion de m****) ne disposant pas d'une capacité à gérer autant de champs que nécessaire... du coup, au final je me retrouve à injecter différentes valeurs dans une gestion logicielle sur laquelle je n'ai pas la main... et qui, pour certaines données me réordonne la data par ordre alphabétique...
    Ok, je reformule en plus simple : mon programme récupère des valeurs au hasard et les réinjecte dans un logiciel qui n'en a pas besoin pour fonctionner
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Décembre 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Décembre 2019
    Messages : 113
    Par défaut
    Très bien résumé!
    c'est parfaitement ça :-)
    mais ça rassure ma hiérarchie de savoir qu'elles sont dedans...

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par clement_74 Voir le message
    pour l'instant je m'en sort avec le code ci dessous... mais je pense qu'il y a plus rapide... plus adapté... Non?
    re.search du module "re" déjà mentionné par papajoker.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    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 736
    Par défaut
    Salut,

    Citation Envoyé par clement_74 Voir le message
    par exemple, avec la liste suivante:
    liste=["14752147", "chanel1", "input", "measure", "DT14-2020", "45874.552"]
    j'aimerais réussir à trouver le: "DT14-2020"
    ça serait bien d'indiquer d'où sortent (comment ont été construites) ces données car elles ressemblent plus à un enregistrement à plusieurs champs (dans ce cas, l'indice de la colonne recherchée suffit) qu'à une collection d'objets disparates.

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

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

Discussions similaires

  1. JTable, créer un comparateur de Dates au format String
    Par Nyphel dans le forum Composants
    Réponses: 7
    Dernier message: 13/02/2007, 16h15
  2. [Oracle] traitement des dates au format string
    Par shaftJackson dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/01/2007, 18h25
  3. Appel de constantes en format String
    Par Shiftane dans le forum Langage
    Réponses: 2
    Dernier message: 20/07/2006, 14h50
  4. Réponses: 3
    Dernier message: 06/03/2006, 07h31
  5. Réponses: 11
    Dernier message: 08/10/2004, 15h12

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